| /*====================================================================* |
| - Copyright (C) 2001 Leptonica. All rights reserved. |
| - This software is distributed in the hope that it will be |
| - useful, but with NO WARRANTY OF ANY KIND. |
| - No author or distributor accepts responsibility to anyone for the |
| - consequences of using this software, or for whether it serves any |
| - particular purpose or works at all, unless he or she says so in |
| - writing. Everyone is granted permission to copy, modify and |
| - redistribute this source code, for commercial or non-commercial |
| - purposes, with the following restrictions: (1) the origin of this |
| - source code must not be misrepresented; (2) modified versions must |
| - be plainly marked as such; and (3) this notice may not be removed |
| - or altered from any source or modified source distribution. |
| *====================================================================*/ |
| |
| /* |
| * Low-level fast hit-miss transform with auto-generated sels |
| * |
| * Dispatcher: |
| --- * l_int32 fhmtgen_low_*() |
| * |
| * Static Low-level: |
| --- * void fhmt_*_*() |
| */ |
| |
| #include <stdio.h> |
| #include "allheaders.h" |
| |
| --- This file is: hmttemplate2.txt |
| --- |
| --- insert static protos here |
| |
| |
| /*---------------------------------------------------------------------* |
| * Fast hmt dispatcher * |
| *---------------------------------------------------------------------*/ |
| /* |
| --- * fhmtgen_low_*() |
| * |
| * a dispatcher to appropriate low-level code |
| */ |
| l_int32 |
| --- fhmtgen_low_*(l_uint32 *datad, |
| l_int32 w, |
| l_int32 h, |
| l_int32 wpld, |
| l_uint32 *datas, |
| l_int32 wpls, |
| l_int32 index) |
| { |
| |
| switch (index) |
| { |
| --- insert dispatcher code for fhmt* routines |
| } |
| |
| return 0; |
| } |
| |
| |
| /*--------------------------------------------------------------------------* |
| * Low-level auto-generated static routines * |
| *--------------------------------------------------------------------------*/ |
| /* |
| * N.B. In all the low-level routines, the part of the image |
| * that is accessed has been clipped by 32 pixels on |
| * all four sides. This is done in the higher level |
| * code by redefining w and h smaller and by moving the |
| * start-of-image pointers up to the beginning of this |
| * interior rectangle. |
| */ |
| --- static void fhmt_*_*(l_uint32 *datad, |
| l_int32 w, |
| l_int32 h, |
| l_int32 wpld, |
| l_uint32 *datas, |
| l_int32 wpls) |
| { |
| l_int32 i; |
| register l_int32 j, pwpls; |
| register l_uint32 *sptr, *dptr; |
| --- declare wplsN args as necessary ---------------------- |
| pwpls = (l_uint32)(w + 31) / 32; /* proper wpl of src */ |
| |
| for (i = 0; i < h; i++) { |
| sptr = datas + i * wpls; |
| dptr = datad + i * wpld; |
| for (j = 0; j < pwpls; j++, sptr++, dptr++) { |
| --- insert barrel-op code for *dptr here ... |
| } |
| } |
| } |
| |