17f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* 27f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 37f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 47f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 57f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * you may not use this file except in compliance with the License. 67f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * You may obtain a copy of the License at 77f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 87f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 97f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * See the License for the specific language governing permissions and 147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * limitations under the License. 157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project */ 167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#ifndef bbf_SCANNER_EM_H 187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#define bbf_SCANNER_EM_H 197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- includes ----------------------------------------------------------- */ 217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/Context.h" 237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/Basic.h" 247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/UInt32Arr.h" 257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/Int32Arr.h" 267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/Int16Arr.h" 277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/MemTbl.h" 287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/UInt16Arr.h" 297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_ImageEm/UInt32Image.h" 307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BitFeatureEm/Feature.h" 327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BitFeatureEm/BitParam.h" 337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- related objects --------------------------------------------------- */ 357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- typedefs ----------------------------------------------------------- */ 377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- constants ---------------------------------------------------------- */ 397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* data format version number */ 417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#define bbf_SCANNER_VERSION 100 427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- object definition -------------------------------------------------- */ 447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** scans an image and provides patches as needed */ 467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bbf_Scanner 477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /* ---- private data --------------------------------------------------- */ 497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** downscale exponent */ 517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 scaleExpE; 527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** current scale (12.20) */ 547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 scaleE; 557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** current scan x-coordinate */ 577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 xE; 587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** current scan y-coordinate */ 607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 yE; 617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** effective maximum scale (12.20) */ 637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 effMaxScaleE; 647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** width of scaled image */ 667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 currentWidthE; 677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** height of scaled image */ 697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 currentHeightE; 707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** width of work image */ 727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 workWidthE; 737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** height of work image */ 757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 workHeightE; 767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** parameter for bit generation */ 787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_BitParam bitParamE; 797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** work image (two pixels per uint16)*/ 817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_UInt16Arr workImageE; 827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** summed-area table (ring buffer) */ 847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bim_UInt32Image satE; 857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** bit image */ 877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bim_UInt32Image bitImageE; 887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** patch buffer */ 907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_UInt32Arr patchBufferE; 917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** image line buffer */ 937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_UInt16Arr lineBufE; 947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** index position buffer */ 987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_UInt32Arr idxArrE; 997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** activity buffer */ 1017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_Int32Arr actArrE; 1027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** composite output buffer */ 1047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_Int32Arr outArrE; 1057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /* internal positions detected */ 1077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 intCountE; 1087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /* output positions detected */ 1107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 outCountE; 1117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** Face positions buffer size (approx.: max faces * 20...60) 1137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * This variable is not part of I/O and must be set before calling memRead 1147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Default value: 1024 -> about 100...200 faces/image detectable 1157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 1167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * The Scanner allocates internally bufferSizeE * 10 bytes of exclusive memory 1177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project */ 1187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 bufferSizeE; 1197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /* ---- public data ---------------------------------------------------- */ 1217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** maximum image width */ 1237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxImageWidthE; 1247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** maximum image height */ 1267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxImageHeightE; 1277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** maximum filter radius */ 1297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxRadiusE; 1307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** patch width */ 1327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 patchWidthE; 1337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** patch height */ 1357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 patchHeightE; 1367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** minimum scale (12.20) */ 1387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 minScaleE; 1397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** maximum scale (12.20) (0: unlimited) */ 1417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxScaleE; 1427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** scale step factor (1.32) (leading bit is always one and therfore ignored) */ 1447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 scaleStepE; 1457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** x-border in pixels */ 1477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 borderWidthE; 1487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** y-border in pixels */ 1507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 borderHeightE; 1517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}; 1537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- associated objects ------------------------------------------------- */ 1557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- external functions ------------------------------------------------- */ 1577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ constructor/destructor } ------------------------------------- */ 1597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** initializes bbf_Scanner */ 1617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_init( struct bbs_Context* cpA, 1627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_Scanner* ptrA ); 1637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** resets bbf_Scanner */ 1657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_exit( struct bbs_Context* cpA, 1667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_Scanner* ptrA ); 1677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ operators } -------------------------------------------------- */ 1697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** copy operator */ 1717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_copy( struct bbs_Context* cpA, 1727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_Scanner* ptrA, 1737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_Scanner* srcPtrA ); 1747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** equal operator */ 1767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bbf_Scanner_equal( struct bbs_Context* cpA, 1777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_Scanner* ptrA, 1787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_Scanner* srcPtrA ); 1797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ query functions } -------------------------------------------- */ 1817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** scan positions at current scale */ 1837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbf_Scanner_positions( const struct bbf_Scanner* ptrA ); 1847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** current scan index */ 1867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbf_Scanner_scanIndex( const struct bbf_Scanner* ptrA ); 1877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** returns current uls position relative to original image; x,y: 16.16; scale: 12.20 */ 1897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_pos( const struct bbf_Scanner* ptrA, 1907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32* xPtrA, int32* yPtrA, uint32* scalePtrA ); 1917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** returns uls position relative to original image at index position; x,y: 16.16; scale: 12.20 */ 1937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_idxPos( const struct bbf_Scanner* ptrA, uint32 scanIndexA, 1947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32* xPtrA, int32* yPtrA, uint32* scalePtrA ); 1957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ modify functions } ------------------------------------------- */ 1977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** creates & initializes object */ 1997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_create( struct bbs_Context* cpA, 2007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_Scanner* ptrA, 2017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project flag maximizeSharedMemoryA, 2027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxImageWidthA, 2037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxImageHeightA, 2047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxRadiusA, 2057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 patchWidthA, 2067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 patchHeightA, 2077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 minScaleA, 2087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxScaleA, 2097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 scaleStepA, 2107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 borderWidthA, 2117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 borderHeightA, 2127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 bufferSizeA, 2137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* mtpA ); 2147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** parameter for bit generation + recomputing bit image */ 2167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_bitParam( struct bbs_Context* cpA, 2177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_Scanner* ptrA, 2187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_BitParam* bitParamPtrA ); 2197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ memory I/O } ------------------------------------------------- */ 2217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** word size (16-bit) object needs when written to memory */ 2237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbf_Scanner_memSize( struct bbs_Context* cpA, 2247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_Scanner* ptrA ); 2257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** writes object to memory; returns number of words (16-bit) written */ 2277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbf_Scanner_memWrite( struct bbs_Context* cpA, 2287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_Scanner* ptrA, uint16* memPtrA ); 2297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** reads object from memory; returns number of words (16-bit) read */ 2317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbf_Scanner_memRead( struct bbs_Context* cpA, 2327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_Scanner* ptrA, 2337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint16* memPtrA, 2347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* mtpA ); 2357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ exec functions } --------------------------------------------- */ 2377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** resets scan position at current scale level */ 2397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_resetScan( struct bbs_Context* cpA, struct bbf_Scanner* ptrA ); 2407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** Assigns image; sets initial bit parameters; resets processor. 2427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * If roiPtrA is NULL, the whole image is considered for processsing 2437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * otherwise *roiPtrA specifies a section of the original image to which 2447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * procesing is limited. All coordinates refer to that section and must 2457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * eventually be corrected externally. 2467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * The roi rectangle must not include pixels outside of the original image 2477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * (checked -> error). The rectangle may be of uneven width. 2487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project */ 2497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_assign( struct bbs_Context* cpA, struct bbf_Scanner* ptrA, 2507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const void* imagePtrA, 2517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 imageWidthA, 2527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 imageHeightA, 2537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_Int16Rect* roiPtrA, 2547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_BitParam* paramPtrA ); 2557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** goes to next scale position */ 2577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bbf_Scanner_nextScale( struct bbs_Context* cpA, struct bbf_Scanner* ptrA ); 2587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** returns pointer to patch data */ 2607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectconst uint32* bbf_Scanner_getPatch( const struct bbf_Scanner* ptrA ); 2617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** goes to next scan position */ 2637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bbf_Scanner_next( struct bbs_Context* cpA, struct bbf_Scanner* ptrA ); 2647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** goes to scan position */ 2667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_goToXY( struct bbs_Context* cpA, struct bbf_Scanner* ptrA, int32 xA, int32 yA ); 2677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** goes to scan index position */ 2697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_goToIndex( struct bbs_Context* cpA, struct bbf_Scanner* ptrA, uint32 scanIndexA ); 2707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** goes to scan position from image uls position (error if scales do not match); x,y: 16.16; scale: 12.20 */ 2727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_goToUls( struct bbs_Context* cpA, struct bbf_Scanner* ptrA, 2737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 xA, int32 yA, uint32 scaleA ); 2747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** The functions below offer positions management of temporary positions needed by the detector object */ 2767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** resets internal positions */ 2787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_resetIntPos( struct bbs_Context* cpA, struct bbf_Scanner* ptrA ); 2797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** reset output positions */ 2817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_resetOutPos( struct bbs_Context* cpA, struct bbf_Scanner* ptrA ) ; 2827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* add internal position */ 2847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_addIntPos( struct bbs_Context* cpA, struct bbf_Scanner* ptrA, uint32 idxA, int32 actA ); 2857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* add external position */ 2877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_Scanner_addOutPos( struct bbs_Context* cpA, 2887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_Scanner* ptrA, 2897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 xA, 2907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 yA, 2917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 scaleA, 2927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 actA ); 2937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* removes internal overlaps */ 2957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbf_Scanner_removeIntOverlaps( struct bbs_Context* cpA, 2967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_Scanner* ptrA, 2977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 overlapThrA ); 2987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** removes output overlaps */ 3007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbf_Scanner_removeOutOverlaps( struct bbs_Context* cpA, 3017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_Scanner* ptrA, 3027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 overlapThrA ); 3037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#endif /* bbf_SCANNER_EM_H */ 3057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 306