*/}}

ourpaint.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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(OurBrushSettingsNode){
  49. laBaseNode Base;
  50. laNodeOutSocket* Size; real rSize;
  51. laNodeOutSocket* Transparency; real rTransparency;
  52. laNodeOutSocket* Hardness; real rHardness;
  53. laNodeOutSocket* Smudge; real rSmudge;
  54. laNodeOutSocket* DabsPerSize;real rDabsPerSize;
  55. laNodeOutSocket* SmudgeLength; real rSmudgeLength;
  56. };
  57. STRUCTURE(OurBrushOutputsNode){
  58. laBaseNode Base;
  59. laNodeInSocket* Size;
  60. laNodeInSocket* Transparency;
  61. laNodeInSocket* Hardness;
  62. laNodeInSocket* Smudge;
  63. laNodeInSocket* DabsPerSize;
  64. laNodeInSocket* SmudgeLength;
  65. };
  66. STRUCTURE(OurBrushDeviceNode){
  67. laBaseNode Base;
  68. laNodeOutSocket* Pressure; real rPressure;
  69. laNodeOutSocket* Position; real rPosition[2];
  70. laNodeOutSocket* Tilt; real rTilt[2];
  71. laNodeOutSocket* IsEraser; int rIsEraser;
  72. };
  73. STRUCTURE(OurBrush){
  74. laListItem Item;
  75. laSafeString Name;
  76. real Size;
  77. real DabsPerSize;
  78. real Hardness;
  79. real Transparency;
  80. real Smudge;
  81. real SmudgeResampleLength; real SmudgeAccum; int SmudgeRestart;
  82. real BrushRemainingDist;
  83. int PressureSize,PressureHardness,PressureTransparency,PressureSmudge; // the simple way
  84. int UseNodes; // the flexible way
  85. laRackPage* Rack;
  86. real EvalSize;
  87. real EvalDabsPerSize;
  88. real EvalHardness;
  89. real EvalTransparency;
  90. real EvalSmudge;
  91. real EvalSmudgeLength;
  92. real EvalPressure;
  93. real EvalPosition[2];
  94. real EvalTilt[2];
  95. int EvalIsEraser;
  96. };
  97. STRUCTURE(OurDab){
  98. float X,Y;
  99. float Size;
  100. float Hardness;
  101. float Smudge; int ResampleSmudge;
  102. float Color[4];
  103. };
  104. STRUCTURE(OurUndoTile){
  105. laListItem Item;
  106. int col,row;
  107. uint16_t* CopyData;
  108. int l,r,u,b;
  109. };
  110. STRUCTURE(OurUndo){
  111. OurLayer* Layer;
  112. laListHandle Tiles;
  113. };
  114. #define OUR_TOOL_PAINT 0
  115. #define OUR_TOOL_CROP 1
  116. STRUCTURE(OurPaint){
  117. real pad;
  118. laListHandle CanvasSaverDummyList;
  119. laProp* CanvasSaverDummyProp;
  120. laListHandle Layers;
  121. OurLayer* CurrentLayer;
  122. laListHandle Brushes;
  123. OurBrush* CurrentBrush;
  124. OurDab* Dabs; int NextDab,MaxDab;
  125. laListHandle BrushEval;
  126. int Tool,ActiveTool;
  127. int X,Y,W,H; //border
  128. int ShowBorder,UseBorder;
  129. tnsTexture* SmudgeTexture;
  130. GLuint CanvasShader;
  131. GLuint CanvasProgram;
  132. GLint uBrushCorner;
  133. GLint uBrushCenter;
  134. GLint uBrushSize;
  135. GLint uBrushHardness;
  136. GLint uBrushSmudge;
  137. GLint uBrushColor;
  138. GLint uBrushRoutineSelection;
  139. GLint RoutineDoDabs;
  140. GLint RoutineDoSample;
  141. real CurrentColor[3];
  142. real BackgroundColor[3];
  143. uint16_t BColorU16[4];
  144. real BorderAlpha;
  145. real xmin,xmax,ymin,ymax; // stroke bbox for undo region
  146. uint16_t *ImageBuffer;
  147. int ImageW,ImageH,ImageX,ImageY,LoadX,LoadY,TempLoadX,TempLoadY;
  148. void* icc_LinearsRGB; int iccsize_LinearsRGB;
  149. void* icc_sRGB; int iccsize_sRGB;
  150. };
  151. void ourInit();
  152. void ourRegisterNodes();
  153. int ourRebuildBrushEval();
  154. int ourEvalBrush();