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_LOCAL_SCANNER_EM_H 187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#define bbf_LOCAL_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_TensorEm/Int16Rect.h" 307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_ImageEm/UInt32Image.h" 317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BitFeatureEm/Feature.h" 337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BitFeatureEm/BitParam.h" 347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- related objects --------------------------------------------------- */ 367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- typedefs ----------------------------------------------------------- */ 387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- constants ---------------------------------------------------------- */ 407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* data format version number */ 427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#define bbf_LOCAL_SCANNER_VERSION 100 437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- object definition -------------------------------------------------- */ 457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** supports scanning an image on a fixed scale and provides patches on local areas as needed */ 477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bbf_LocalScanner 487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /* ---- private data --------------------------------------------------- */ 507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** current scan x-coordinate */ 527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 xE; 537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** current scan y-coordinate */ 557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 yE; 567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** current xOffset */ 587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 xOffE; 597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** current yOffset */ 617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 yOffE; 627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** width of scaled image */ 647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 currentWidthE; 657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** height of scaled image */ 677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 currentHeightE; 687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** width of work image */ 707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 workWidthE; 717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** height of work image */ 737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 workHeightE; 747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** pointer to working image data */ 767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint8* workImagePtrE; 777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** width of original image */ 797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 origWidthE; 807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** height of original image */ 827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 origHeightE; 837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** pointer to original image data */ 857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint8* origImagePtrE; 867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** parameter for bit generation */ 887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_BitParam bitParamE; 897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** work image (two pixels per uint16)*/ 917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_UInt8Arr workImageBufferE; 927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** summed-area table (ring buffer) */ 947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bim_UInt32Image satE; 957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** bit image */ 977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bim_UInt32Image bitImageE; 987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** patch buffer */ 1007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_UInt32Arr patchBufferE; 1017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** original scan region */ 1037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Int16Rect origScanRegionE; 1047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** current scan region */ 1067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Int16Rect workScanRegionE; 1077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /* ---- public data ---------------------------------------------------- */ 1097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** patch width */ 1117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 patchWidthE; 1127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** patch height */ 1147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 patchHeightE; 1157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** scale exponent (determines at which scale patch data is actually generated) */ 1177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 scaleExpE; 1187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** max image width */ 1207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxImageWidthE; 1217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** max image height */ 1237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxImageHeightE; 1247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project /** min scale exponent */ 1267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 minScaleExpE; 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}; 1327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- associated objects ------------------------------------------------- */ 1347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- external functions ------------------------------------------------- */ 1367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ constructor/destructor } ------------------------------------- */ 1387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** initializes bbf_LocalScanner */ 1407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_LocalScanner_init( struct bbs_Context* cpA, 1417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_LocalScanner* ptrA ); 1427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** resets bbf_LocalScanner */ 1447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_LocalScanner_exit( struct bbs_Context* cpA, 1457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_LocalScanner* ptrA ); 1467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ operators } -------------------------------------------------- */ 1487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** copy operator */ 1507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_LocalScanner_copy( struct bbs_Context* cpA, 1517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_LocalScanner* ptrA, 1527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_LocalScanner* srcPtrA ); 1537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** equal operator */ 1557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bbf_LocalScanner_equal( struct bbs_Context* cpA, 1567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_LocalScanner* ptrA, 1577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_LocalScanner* srcPtrA ); 1587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ query functions } -------------------------------------------- */ 1607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** total scan positions at current scale */ 1627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbf_LocalScanner_positions( const struct bbf_LocalScanner* ptrA ); 1637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** current scan index */ 1657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbf_LocalScanner_scanIndex( const struct bbf_LocalScanner* ptrA ); 1667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** returns ul position relative to original image; x,y coordinates: 16.16 */ 1687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_LocalScanner_pos( const struct bbf_LocalScanner* ptrA, int32* xPtrA, int32* yPtrA ); 1697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** returns uls position relative to original image at index position; x,y coordinates: 16.16 */ 1717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_LocalScanner_idxPos( const struct bbf_LocalScanner* ptrA, uint32 scanIndexA, int32* xPtrA, int32* yPtrA ); 1727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ modify functions } ------------------------------------------- */ 1747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** creates & initializes object */ 1767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_LocalScanner_create( struct bbs_Context* cpA, 1777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_LocalScanner* ptrA, 1787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 patchWidthA, 1797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 patchHeightA, 1807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 scaleExpA, 1817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxImageWidthA, 1827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxImageHeightA, 1837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 minScaleExpA, 1847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxRadiusA, 1857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* mtpA ); 1867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** parameter for bit generation + recomputing bit image */ 1887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_LocalScanner_bitParam( struct bbs_Context* cpA, 1897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_LocalScanner* ptrA, 1907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_BitParam* bitParamPtrA ); 1917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** Specifies a (sub-) scan region 1937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Scanning within a given scale is limited to that region. 1947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Region is truncateed to physical region 1957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Image assignment, bitParam assignment and function nextScale reset the sacn region to 1967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * the whole image. 1977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project */ 1987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_LocalScanner_origScanRegion( struct bbs_Context* cpA, 1997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_LocalScanner* ptrA, 2007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_Int16Rect* scanRegionPtrA ); 2017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ memory I/O } ------------------------------------------------- */ 2037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** word size (16-bit) object needs when written to memory */ 2057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbf_LocalScanner_memSize( struct bbs_Context* cpA, 2067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_LocalScanner* ptrA ); 2077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** writes object to memory; returns number of words (16-bit) written */ 2097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbf_LocalScanner_memWrite( struct bbs_Context* cpA, 2107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_LocalScanner* ptrA, uint16* memPtrA ); 2117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** reads object from memory; returns number of words (16-bit) read */ 2137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbf_LocalScanner_memRead( struct bbs_Context* cpA, 2147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_LocalScanner* ptrA, 2157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint16* memPtrA, 2167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemTbl* mtpA ); 2177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ exec functions } --------------------------------------------- */ 2197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** resets scan position at current scale level */ 2217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_LocalScanner_resetScan( struct bbs_Context* cpA, 2227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_LocalScanner* ptrA ); 2237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** assigns image; sets initial bit parameters; resets processor */ 2257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_LocalScanner_assign( struct bbs_Context* cpA, 2267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbf_LocalScanner* ptrA, 2277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint8* imagePtrA, 2287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 imageWidthA, 2297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 imageHeightA, 2307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bbf_BitParam* paramPtrA ); 2317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** returns pointer to patch data */ 2337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectconst uint32* bbf_LocalScanner_getPatch( const struct bbf_LocalScanner* ptrA ); 2347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** goes to next scan position */ 2367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bbf_LocalScanner_next( struct bbs_Context* cpA, struct bbf_LocalScanner* ptrA ); 2377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** goes to scan position (integer coordinate numbers) */ 2397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_LocalScanner_goToXY( struct bbs_Context* cpA, struct bbf_LocalScanner* ptrA, int32 xA, int32 yA ); 2407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** goes to scan position */ 2427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbf_LocalScanner_goToIndex( struct bbs_Context* cpA, struct bbf_LocalScanner* ptrA, uint32 scanIndexA ); 2437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** goes to next offset position */ 2457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bbf_LocalScanner_nextOffset( struct bbs_Context* cpA, struct bbf_LocalScanner* ptrA ); 2467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#endif /* bbf_LOCAL_SCANNER_EM_H */ 2487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 249