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