*/}}

ourpaint.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #include "la_5.h"
  2. #define OUR_AT_CROP_CENTER 0
  3. #define OUR_AT_CROP_L 1
  4. #define OUR_AT_CROP_R 2
  5. #define OUR_AT_CROP_U 3
  6. #define OUR_AT_CROP_B 4
  7. #define OUR_AT_CROP_UL 5
  8. #define OUR_AT_CROP_UR 6
  9. #define OUR_AT_CROP_BL 7
  10. #define OUR_AT_CROP_BR 8
  11. STRUCTURE(OurCanvasDraw){
  12. laCanvasExtra Base;
  13. int ShowTiles;
  14. int AtCrop;
  15. real CanvasLastX,CanvasLastY;
  16. real CanvasDownX,CanvasDownY;
  17. real LastPressure;
  18. };
  19. #define OUR_TILE_W 64
  20. #define OUR_TEX_TILE_W 1024
  21. #define OUR_TEX_TILES_PER_ROW 100
  22. #define OUR_TILES_PER_ROW (OUR_TEX_TILES_PER_ROW*(OUR_TEX_TILE_W/OUR_TILE_W))
  23. #define OUR_TEX_TILE_CTR (OUR_TEX_TILES_PER_ROW/2)
  24. #define OUR_TEX_TILE_SEAM 12
  25. #define OUR_TEX_TILE_W_USE (OUR_TEX_TILE_W-OUR_TEX_TILE_SEAM*2)
  26. STRUCTURE(OurTexTile){
  27. tnsTexture* Texture;
  28. uint16_t* Data;
  29. int l,r,u,b;
  30. uint16_t* FullData;
  31. uint16_t* CopyBuffer;
  32. int cl,cr,cu,cb;
  33. };
  34. STRUCTURE(OurLayer){
  35. laListItem Item;
  36. laSafeString Name;
  37. int OffsetX,OffsetY;
  38. OurTexTile** TexTiles[OUR_TEX_TILES_PER_ROW];
  39. };
  40. STRUCTURE(OurLayerWrite){
  41. unsigned char* data;
  42. size_t NextData, MaxData;
  43. };
  44. STRUCTURE(OurLayerRead){
  45. unsigned char* data;
  46. size_t NextData;
  47. };
  48. STRUCTURE(OurBrush){
  49. laListItem Item;
  50. laSafeString Name;
  51. real Size;
  52. real DabsPerSize;
  53. real Hardness;
  54. real Transparency;
  55. real Smudge;
  56. real SmudgeResampleLength; real SmudgeAccum; int SmudgeRestart;
  57. real BrushRemainingDist;
  58. int UseNodes; // the flexible way
  59. int PressureSize,PressureHardness,PressureTransparency,PressureSmudge; // the simple way
  60. };
  61. STRUCTURE(OurDab){
  62. float X,Y;
  63. float Size;
  64. float Hardness;
  65. float Smudge; int ResampleSmudge;
  66. float Color[4];
  67. };
  68. STRUCTURE(OurUndoTile){
  69. laListItem Item;
  70. int col,row;
  71. uint16_t* CopyData;
  72. int l,r,u,b;
  73. };
  74. STRUCTURE(OurUndo){
  75. OurLayer* Layer;
  76. laListHandle Tiles;
  77. };
  78. #define OUR_TOOL_PAINT 0
  79. #define OUR_TOOL_CROP 1
  80. STRUCTURE(OurPaint){
  81. real pad;
  82. laListHandle CanvasSaverDummyList;
  83. laProp* CanvasSaverDummyProp;
  84. laListHandle Layers;
  85. OurLayer* CurrentLayer;
  86. laListHandle Brushes;
  87. OurBrush* CurrentBrush;
  88. OurDab* Dabs; int NextDab,MaxDab;
  89. int Tool,ActiveTool;
  90. int X,Y,W,H; //border
  91. int ShowBorder,UseBorder;
  92. tnsTexture* SmudgeTexture;
  93. GLuint CanvasShader;
  94. GLuint CanvasProgram;
  95. GLint uBrushCorner;
  96. GLint uBrushCenter;
  97. GLint uBrushSize;
  98. GLint uBrushHardness;
  99. GLint uBrushSmudge;
  100. GLint uBrushColor;
  101. GLint uBrushRoutineSelection;
  102. GLint RoutineDoDabs;
  103. GLint RoutineDoSample;
  104. real CurrentColor[3];
  105. real BackgroundColor[3];
  106. uint16_t BColorU16[4];
  107. real BorderAlpha;
  108. real xmin,xmax,ymin,ymax; // stroke bbox for undo region
  109. uint16_t *ImageBuffer;
  110. int ImageW,ImageH,ImageX,ImageY,LoadX,LoadY,TempLoadX,TempLoadY;
  111. void* icc_LinearsRGB; int iccsize_LinearsRGB;
  112. void* icc_sRGB; int iccsize_sRGB;
  113. };
  114. void ourInit();