mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-11 02:44:13 +08:00
428 lines
8.8 KiB
C
428 lines
8.8 KiB
C
// ImageCompose.h : Declaration of the composition constants
|
|
|
|
#pragma once
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
// Constants
|
|
|
|
// dost
|
|
const BYTE c_byPatternDots[8][8] =
|
|
{
|
|
{1,0,0,0,1,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{1,0,0,0,1,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0}
|
|
};
|
|
|
|
// dots dense
|
|
const BYTE c_byPatternDotsDense[8][8] =
|
|
{
|
|
{1,0,1,0,1,0,1,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{1,0,1,0,1,0,1,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{1,0,1,0,1,0,1,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{1,0,1,0,1,0,1,0},
|
|
{0,0,0,0,0,0,0,0}
|
|
};
|
|
|
|
// grid
|
|
const BYTE c_byPatternGrid[8][8] =
|
|
{
|
|
{1,1,1,1,1,1,1,1},
|
|
{1,0,0,0,1,0,0,0},
|
|
{1,0,0,0,1,0,0,0},
|
|
{1,0,0,0,1,0,0,0},
|
|
{1,1,1,1,1,1,1,1},
|
|
{1,0,0,0,1,0,0,0},
|
|
{1,0,0,0,1,0,0,0},
|
|
{1,0,0,0,1,0,0,0}
|
|
};
|
|
|
|
// grid rotated
|
|
const BYTE c_byPatternGridRotated[8][8] =
|
|
{
|
|
{1,0,0,0,0,0,0,1},
|
|
{0,1,0,0,0,0,1,0},
|
|
{0,0,1,0,0,1,0,0},
|
|
{0,0,0,1,1,0,0,0},
|
|
{0,0,0,1,1,0,0,0},
|
|
{0,0,1,0,0,1,0,0},
|
|
{0,1,0,0,0,0,1,0},
|
|
{1,0,0,0,0,0,0,1}
|
|
};
|
|
|
|
// line vertical
|
|
const BYTE c_byPatternLineVertical[8][8] =
|
|
{
|
|
{1,0,0,0,1,0,0,0},
|
|
{1,0,0,0,1,0,0,0},
|
|
{1,0,0,0,1,0,0,0},
|
|
{1,0,0,0,1,0,0,0},
|
|
{1,0,0,0,1,0,0,0},
|
|
{1,0,0,0,1,0,0,0},
|
|
{1,0,0,0,1,0,0,0},
|
|
{1,0,0,0,1,0,0,0}
|
|
};
|
|
|
|
// line horizontal
|
|
const BYTE c_byPatternLineHorizontal[8][8] =
|
|
{
|
|
{1,1,1,1,1,1,1,1},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{1,1,1,1,1,1,1,1},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0}
|
|
};
|
|
|
|
// line diagonal
|
|
const BYTE c_byPatternLineDiagonal[8][8] =
|
|
{
|
|
{0,0,0,1,0,0,0,0},
|
|
{0,0,1,0,0,0,0,0},
|
|
{0,1,0,0,0,0,0,0},
|
|
{1,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,1},
|
|
{0,0,0,0,0,0,1,0},
|
|
{0,0,0,0,0,1,0,0},
|
|
{0,0,0,0,1,0,0,0}
|
|
};
|
|
|
|
// line diagonal rotated
|
|
const BYTE c_byPatternLineDiagonalRotated[8][8] =
|
|
{
|
|
{0,0,0,0,1,0,0,0},
|
|
{0,0,0,0,0,1,0,0},
|
|
{0,0,0,0,0,0,1,0},
|
|
{0,0,0,0,0,0,0,1},
|
|
{1,0,0,0,0,0,0,0},
|
|
{0,1,0,0,0,0,0,0},
|
|
{0,0,1,0,0,0,0,0},
|
|
{0,0,0,1,0,0,0,0}
|
|
};
|
|
|
|
// chess board
|
|
const BYTE c_byPatternChessBoard[8][8] =
|
|
{
|
|
{1,1,1,1,0,0,0,0},
|
|
{1,1,1,1,0,0,0,0},
|
|
{1,1,1,1,0,0,0,0},
|
|
{1,1,1,1,0,0,0,0},
|
|
{0,0,0,0,1,1,1,1},
|
|
{0,0,0,0,1,1,1,1},
|
|
{0,0,0,0,1,1,1,1},
|
|
{0,0,0,0,1,1,1,1}
|
|
};
|
|
|
|
// dashes
|
|
const BYTE c_byPatternDashes[8][8] =
|
|
{
|
|
{1,0,0,0,0,0,0,0},
|
|
{0,1,0,0,0,0,0,0},
|
|
{0,0,1,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,1,0},
|
|
{0,0,0,0,0,1,0,0},
|
|
{0,0,0,0,1,0,0,0},
|
|
{0,0,0,0,0,0,0,0}
|
|
};
|
|
|
|
// spiner
|
|
const BYTE c_byPatternSpiner[8][8] =
|
|
{
|
|
{0,0,0,1,0,1,0,0},
|
|
{0,0,0,0,1,1,0,0},
|
|
{1,1,0,0,1,0,0,0},
|
|
{0,1,1,1,1,0,0,1},
|
|
{1,0,0,1,1,1,1,0},
|
|
{0,0,0,1,0,0,1,1},
|
|
{0,0,1,1,0,0,0,0},
|
|
{0,0,1,0,1,0,0,0}
|
|
};
|
|
|
|
// thatches
|
|
const BYTE c_byPatternThatches[8][8] =
|
|
{
|
|
{1,1,1,1,1,0,0,0},
|
|
{0,1,1,1,0,1,0,0},
|
|
{0,0,1,0,0,0,1,0},
|
|
{0,1,0,0,0,1,1,1},
|
|
{1,0,0,0,1,1,1,1},
|
|
{0,0,0,1,0,1,1,1},
|
|
{0,0,1,0,0,0,1,0},
|
|
{0,1,1,1,0,0,0,1}
|
|
};
|
|
|
|
// empty
|
|
const BYTE c_byPatternEmpty[8][8] =
|
|
{
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0},
|
|
{0,0,0,0,0,0,0,0}
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////
|
|
// Mosaic patterns
|
|
|
|
// spiral in
|
|
const BYTE c_byMosaicSpiralIn[8][8] =
|
|
{
|
|
{ 0, 1, 2, 3, 4, 5, 6, 7},
|
|
{27,28,29,30,31,32,33, 8},
|
|
{26,47,48,49,50,51,34, 9},
|
|
{25,45,59,60,61,52,35,10},
|
|
{24,45,58,63,62,53,36,11},
|
|
{23,44,57,56,55,54,37,12},
|
|
{22,43,42,41,40,39,38,13},
|
|
{21,20,19,18,17,16,15,14}
|
|
};
|
|
|
|
// spiral out
|
|
const BYTE c_byMosaicSpiralOut[8][8] =
|
|
{
|
|
{42,43,44,45,46,47,48,49},
|
|
{41,20,21,22,23,24,25,50},
|
|
{40,19, 6, 7, 8, 9,26,51},
|
|
{39,18, 5, 0, 1,10,27,52},
|
|
{38,17, 4, 3, 2,11,28,53},
|
|
{37,16,15,14,13,12,29,54},
|
|
{36,35,34,33,32,31,30,55},
|
|
{63,62,61,60,59,58,57,56}
|
|
};
|
|
|
|
// strips
|
|
const BYTE c_byMosaicStrips[8][8] =
|
|
{
|
|
{ 7,15,23,31,39,47,55,63},
|
|
{63,55,47,39,31,23,15, 7},
|
|
{ 7,15,23,31,39,47,55,63},
|
|
{63,55,47,39,31,23,15, 7},
|
|
{ 7,15,23,31,39,47,55,63},
|
|
{63,55,47,39,31,23,15, 7},
|
|
{ 7,15,23,31,39,47,55,63},
|
|
{63,55,47,39,31,23,15, 7}
|
|
};
|
|
|
|
// dissolve
|
|
const BYTE c_byMosaicDissolve[8][8] =
|
|
{
|
|
{35,55,19,59,35,55,19,59},
|
|
{47,23,63,31,47,23,63,31},
|
|
{27,51,39,11,27,51,39,11},
|
|
{43,15, 7, 3,43,15, 7, 3},
|
|
{35,55,19,59,35,55,19,59},
|
|
{47,23,63,31,47,23,63,31},
|
|
{27,51,39,11,27,51,39,11},
|
|
{43,15, 7, 3,43,15, 7, 3}
|
|
};
|
|
|
|
// random
|
|
const BYTE c_byMosaicRandom[8][8] =
|
|
{
|
|
{ 0,54,48,13,61, 5,51,45},
|
|
{24,29, 4,33,44,25, 9,20},
|
|
{43,63,37,55,17,30,40,56},
|
|
{21,14,23,10,27,12, 2,32},
|
|
{38,53,34,47, 1,62,46, 8},
|
|
{59, 7,57,22,39,18,36,41},
|
|
{15,42,16,60,11,50,31,19},
|
|
{49,28, 3,35,58,26, 6,52}
|
|
};
|
|
|
|
// diagonal left-bottom
|
|
const BYTE c_byMosaicDiagonalLeftBottom[8][8] =
|
|
{
|
|
{ 0, 4, 8,13,17,21,26,30},
|
|
{ 4, 8,13,17,21,26,30,34},
|
|
{ 8,13,17,21,26,30,34,39},
|
|
{13,17,21,26,30,34,39,43},
|
|
{17,21,26,30,34,39,43,48},
|
|
{21,26,30,34,39,43,48,52},
|
|
{26,30,34,39,43,48,52,57},
|
|
{30,34,39,43,48,52,57,63}
|
|
};
|
|
|
|
// diagonal left-top
|
|
const BYTE c_byMosaicDiagonalLeftTop[8][8] =
|
|
{
|
|
{31,35,39,44,49,53,58,63},
|
|
{27,31,35,39,44,49,53,58},
|
|
{21,27,31,35,39,44,49,53},
|
|
{17,21,27,31,35,39,44,49},
|
|
{13,17,21,27,31,35,39,44},
|
|
{ 9,13,17,21,27,31,35,39},
|
|
{ 4, 9,13,17,21,27,31,35},
|
|
{ 0, 4, 9,13,17,21,27,31}
|
|
};
|
|
|
|
// diagonal right-bottom
|
|
const BYTE c_byMosaicDiagonalRightBottom[8][8] =
|
|
{
|
|
{31,27,21,17,13, 9, 4, 0},
|
|
{35,31,27,21,17,13, 9, 4},
|
|
{39,35,31,27,21,17,13, 9},
|
|
{44,39,35,31,27,21,17,13},
|
|
{49,44,39,35,31,27,21,17},
|
|
{53,49,44,39,35,31,27,21},
|
|
{59,53,49,44,39,35,31,27},
|
|
{63,59,53,49,44,39,35,31}
|
|
};
|
|
|
|
// diagonal right-top
|
|
const BYTE c_byMosaicDiagonalRightTop[8][8] =
|
|
{
|
|
{63,59,53,49,44,39,35,31},
|
|
{59,53,49,44,39,35,31,27},
|
|
{53,49,44,39,35,31,27,21},
|
|
{49,44,39,35,31,27,21,17},
|
|
{44,39,35,31,27,21,17,13},
|
|
{39,35,31,27,21,17,13, 9},
|
|
{35,31,27,21,17,13, 9, 4},
|
|
{31,27,21,17,13, 9, 4, 0}
|
|
};
|
|
|
|
// wall left
|
|
const BYTE c_byMosaicWallLeft[8][8] =
|
|
{
|
|
{ 0,15,16,31,32,47,48,63},
|
|
{ 1,14,17,30,33,46,49,62},
|
|
{ 2,13,18,29,34,45,50,61},
|
|
{ 3,12,19,28,35,44,51,60},
|
|
{ 4,11,20,27,36,43,52,59},
|
|
{ 5,10,21,26,37,42,53,58},
|
|
{ 6, 9,22,25,38,41,54,57},
|
|
{ 7, 8,23,24,39,40,55,56}
|
|
};
|
|
|
|
// wall right
|
|
const BYTE c_byMosaicWallRight[8][8] =
|
|
{
|
|
{63,48,47,32,31,16,15, 0},
|
|
{62,49,46,33,30,17,14, 1},
|
|
{61,50,45,34,29,18,13, 2},
|
|
{60,51,44,35,28,19,12, 3},
|
|
{59,52,43,36,27,20,11, 4},
|
|
{58,53,42,37,26,21,10, 5},
|
|
{57,54,41,38,25,22, 9, 6},
|
|
{56,55,40,39,24,23, 8, 7}
|
|
};
|
|
|
|
// wall bottom
|
|
const BYTE c_byMosaicWallBottom[8][8] =
|
|
{
|
|
{ 0, 1, 2, 3, 4, 5, 6, 7},
|
|
{15,14,13,12,11,10, 9, 8},
|
|
{16,17,18,19,20,21,22,23},
|
|
{31,30,29,28,27,26,25,24},
|
|
{32,33,34,35,36,37,38,39},
|
|
{47,46,45,44,43,42,41,40},
|
|
{48,49,50,51,52,53,54,55},
|
|
{63,62,61,60,59,58,57,56}
|
|
};
|
|
|
|
// wall top
|
|
const BYTE c_byMosaicWallTop[8][8] =
|
|
{
|
|
{63,62,61,60,59,58,57,56},
|
|
{48,49,50,51,52,53,54,55},
|
|
{47,46,45,44,43,42,41,40},
|
|
{32,33,34,35,36,37,38,39},
|
|
{31,30,29,28,27,26,25,24},
|
|
{16,17,18,19,20,21,22,23},
|
|
{15,14,13,12,11,10, 9, 8},
|
|
{ 0, 1, 2, 3, 4, 5, 6, 7}
|
|
};
|
|
|
|
// chess left
|
|
const BYTE c_byMosaicChessLeft[8][8] =
|
|
{
|
|
{ 0,36, 8,44,16,52,24,60},
|
|
{32, 4,40,12,48,20,56,28},
|
|
{ 1,37, 9,45,17,53,25,61},
|
|
{33, 5,41,13,49,21,57,29},
|
|
{ 2,38,10,46,18,54,26,62},
|
|
{34, 6,42,14,50,22,59,30},
|
|
{ 3,39,11,47,19,55,27,63},
|
|
{35, 7,43,15,51,23,59,31}
|
|
};
|
|
|
|
// chess right
|
|
const BYTE c_byMosaicChessRight[8][8] =
|
|
{
|
|
{60,24,52,16,44, 8,36, 0},
|
|
{28,56,20,48,12,40, 4,32},
|
|
{61,25,53,17,45, 9,37, 1},
|
|
{29,57,21,49,13,41, 5,33},
|
|
{62,26,54,18,46,10,38, 2},
|
|
{30,59,22,50,14,42, 6,34},
|
|
{63,27,55,19,47,11,39, 3},
|
|
{31,59,23,51,15,43, 7,35}
|
|
};
|
|
|
|
// chess top
|
|
const BYTE c_byMosaicChessTop[8][8] =
|
|
{
|
|
{60,28,61,29,62,30,63,31},
|
|
{24,56,25,57,26,58,27,59},
|
|
{52,20,53,21,54,22,55,23},
|
|
{16,48,17,49,18,50,19,51},
|
|
{44,12,45,13,46,14,47,15},
|
|
{ 8,40, 9,41,10,42,11,43},
|
|
{36, 4,37, 5,38, 6,39, 7},
|
|
{ 0,32, 1,33, 2,34, 3,35}
|
|
};
|
|
|
|
// chess bottom
|
|
const BYTE c_byMosaicChessBottom[8][8] =
|
|
{
|
|
{ 0,32, 1,33, 2,34, 3,35},
|
|
{36, 4,37, 5,38, 6,39, 7},
|
|
{ 8,40, 9,41,10,42,11,43},
|
|
{44,12,45,13,46,14,47,15},
|
|
{16,48,17,49,18,50,19,51},
|
|
{52,20,53,21,54,22,55,23},
|
|
{24,56,25,57,26,58,27,59},
|
|
{60,28,61,29,62,30,63,31}
|
|
};
|
|
|
|
// counterclockwise
|
|
const BYTE c_byMosaicCounterClockwise[8][8] =
|
|
{
|
|
{60,61,63, 3, 5, 6, 9,12},
|
|
{57,59,62, 2, 4, 8,11,13},
|
|
{55,56,58, 1, 7,10,15,16},
|
|
{54,53,52, 0,14,17,18,19},
|
|
{51,50,48,34,24,22,20,21},
|
|
{49,46,43,37,31,27,25,23},
|
|
{47,44,41,38,35,32,28,26},
|
|
{45,42,40,39,36,33,30,29}
|
|
};
|
|
|
|
// clockwise
|
|
const BYTE c_byMosaicClockwise[8][8] =
|
|
{
|
|
{ 9, 6, 5, 3,64,63,60,58},
|
|
{10, 8, 4, 2,62,59,57,55},
|
|
{13,12, 7, 1,61,56,54,53},
|
|
{15,14,11, 0,48,49,50,51},
|
|
{16,17,19,26,36,45,46,47},
|
|
{18,20,22,29,34,39,42,44},
|
|
{21,23,27,30,32,37,40,43},
|
|
{24,25,28,31,33,35,38,41}
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////
|