コード例 #1
0
ファイル: BlockMap.c プロジェクト: padhansell/libAFIS
BlockMap BlockMap_Construct(const Size *pixelSize, int maxBlockSize)
{
    BlockMap bm;

    bm.pixelCount = *pixelSize;
    bm.blockCount = Size_Construct(Calc_DivRoundUp(bm.pixelCount.width, maxBlockSize),
                                   Calc_DivRoundUp(bm.pixelCount.height, maxBlockSize));
    bm.cornerCount = BlockToCornerCount(&bm.blockCount);
    bm.allBlocks = RectangleC_ConstructFromSize(&bm.blockCount);
    bm.allCorners = RectangleC_ConstructFromSize(&bm.cornerCount);
    bm.corners = InitCorners(&bm);
    bm.blockAreas = RectangleGrid_Construct(&bm.corners);
    bm.blockCenters = InitBlockCenters(&bm);
    bm.cornerAreas = InitCornerAreas(&bm);
    return bm;
}
コード例 #2
0
ファイル: BlockMap.c プロジェクト: padhansell/libAFIS
static RectangleGrid InitCornerAreas(const BlockMap *me)
{
    Size s = Size_Construct(me->cornerCount.width + 1, me->cornerCount.height + 1);
    PointGrid grid = PointGrid_Construct(&s);

    grid.allY.data[0] = 0;
    for (int y = 0; y < me->blockCount.height; ++y)
    {
        Point p = PointGrid_GetPointFromCoordinates(&me->blockCenters, y, 0);
        grid.allY.data[y + 1] = p.y;
    }
    grid.allY.data[me->blockCount.height] = me->pixelCount.height;

    grid.allX.data[0] = 0;
    for (int x = 0; x < me->blockCount.width; ++x)
    {
        Point p = PointGrid_GetPointFromCoordinates(&me->blockCenters, 0, x);
        grid.allX.data[x + 1] = p.x;
    }
    grid.allX.data[me->blockCount.width] = me->pixelCount.width;

    return RectangleGrid_Construct(&grid);
}
コード例 #3
0
ファイル: RectangleC.c プロジェクト: EMali2HF/libAFIS
Size RectangleC_GetSize(const RectangleC *me)
{
    return Size_Construct(me->width, me->height);
}
コード例 #4
0
ファイル: BlockMap.c プロジェクト: padhansell/libAFIS
static Size BlockToCornerCount(const Size *blockCount)
{
    return Size_Construct(blockCount->width + 1, blockCount->height + 1);
}