Subversion Repositories Kolibri OS

Rev

Rev 7262 | Rev 7521 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #define TOIMAGE 1
  2. #define TOCANVAS 2
  3.  
  4.  
  5. struct Tool {
  6.         int id;
  7.         dword cursor;
  8.         void (*activate)();
  9.         void (*deactivate)();
  10.         void (*onMouseEvent)(int x, int y, int lkm, int pkm);
  11.         void (*onKeyEvent)(dword keycode);
  12.         void (*onCanvasDraw)();
  13. };
  14.  
  15. int previousTool = -1;
  16. int currentTool = -1;
  17. Tool tools[8];
  18.  
  19. enum {
  20.         TOOL_NONE = -1,
  21.         TOOL_PENCIL,
  22.         TOOL_PIPETTE,
  23.         TOOL_FILL,
  24.         TOOL_LINE,
  25.         TOOL_RECT,
  26.         TOOL_BAR,
  27.         TOOL_SELECT,
  28.         TOOL_SCREEN_COPY
  29. };
  30. #include "tools/pencil.h";
  31. #include "tools/pipette.h";
  32. #include "tools/fill.h";
  33. #include "tools/simple_figure.h";
  34. #include "tools/selection.h";
  35. #include "tools/screen_copy.h";
  36.  
  37.  
  38. void initTools()
  39. {
  40.         tools[TOOL_PENCIL].id = TOOL_PENCIL;
  41.         tools[TOOL_PENCIL].cursor = #CursorPencil;
  42.         tools[TOOL_PENCIL].onMouseEvent = #PencilTool_onMouseEvent;
  43.         tools[TOOL_PENCIL].deactivate = #PencilTool_reset;
  44.        
  45.         tools[TOOL_PIPETTE].id = TOOL_PIPETTE;
  46.         tools[TOOL_PIPETTE].cursor = #CursorPipette;
  47.         tools[TOOL_PIPETTE].activate = #PipetteTool_activate;
  48.         tools[TOOL_PIPETTE].onMouseEvent = #PipetteTool_onMouseEvent;
  49.         tools[TOOL_PIPETTE].onKeyEvent = #PipetteTool_onKeyEvent;
  50.        
  51.         tools[TOOL_FILL].id = TOOL_FILL;
  52.         tools[TOOL_FILL].cursor = #CursorFill;
  53.         tools[TOOL_FILL].onMouseEvent = #FillTool_onMouseEvent;
  54.        
  55.         tools[TOOL_LINE].id = TOOL_LINE;
  56.         tools[TOOL_LINE].cursor = #CursorLine;
  57.         tools[TOOL_LINE].activate = #SimpleFigureTool_Reset;
  58.         tools[TOOL_LINE].deactivate = #SimpleFigureTool_Reset;
  59.         tools[TOOL_LINE].onMouseEvent = #SimpleFigureTool_onMouseEvent;
  60.         tools[TOOL_LINE].onCanvasDraw = #SimpleFigureTool_onCanvasDraw;
  61.        
  62.         tools[TOOL_RECT].id = TOOL_RECT;
  63.         tools[TOOL_RECT].cursor = #CursorRectangle;
  64.         tools[TOOL_RECT].activate = #SimpleFigureTool_Reset;
  65.         tools[TOOL_RECT].deactivate = #SimpleFigureTool_Reset;
  66.         tools[TOOL_RECT].onMouseEvent = #SimpleFigureTool_onMouseEvent;
  67.         tools[TOOL_RECT].onCanvasDraw = #SimpleFigureTool_onCanvasDraw;
  68.  
  69.         tools[TOOL_BAR].id = TOOL_BAR;
  70.         tools[TOOL_BAR].cursor = #CursorBar;
  71.         tools[TOOL_BAR].activate = #SimpleFigureTool_Reset;
  72.         tools[TOOL_BAR].deactivate = #SimpleFigureTool_Reset;
  73.         tools[TOOL_BAR].onMouseEvent = #SimpleFigureTool_onMouseEvent;
  74.         tools[TOOL_BAR].onCanvasDraw = #SimpleFigureTool_onCanvasDraw; 
  75.  
  76.         tools[TOOL_SELECT].id = TOOL_SELECT;
  77.         tools[TOOL_SELECT].cursor = #CursorSelect;
  78.         tools[TOOL_SELECT].activate = #SelectTool_activate;
  79.         tools[TOOL_SELECT].deactivate = #SelectTool_deactivate;
  80.         tools[TOOL_SELECT].onMouseEvent = #SelectTool_onMouseEvent;
  81.         tools[TOOL_SELECT].onCanvasDraw = #SelectTool_onCanvasDraw;    
  82.         tools[TOOL_SELECT].onKeyEvent = #SelectTool_onKeyEvent;
  83.  
  84.         tools[TOOL_SCREEN_COPY].id = TOOL_SCREEN_COPY;
  85.         tools[TOOL_SCREEN_COPY].cursor = NULL;
  86.         tools[TOOL_SCREEN_COPY].activate = #ScreenCopy_activate;
  87.         tools[TOOL_SCREEN_COPY].onMouseEvent = #ScreenCopy_onMouseEvent;
  88. }
  89.  
  90.  
  91. void resetCurrentTool() {
  92.         if ((currentTool != TOOL_NONE) && (tools[currentTool].deactivate != 0)) {
  93.                 tools[currentTool].deactivate();
  94.         }
  95.         currentTool = TOOL_NONE;
  96. }
  97.  
  98. void setCurrentTool(int index) {
  99.         previousTool = currentTool;
  100.         resetCurrentTool();
  101.  
  102.         currentTool = index;
  103.        
  104.         if ((index != TOOL_NONE) && (tools[index].activate != 0))
  105.                 tools[index].activate();
  106.  
  107.         Cursor.Restore();
  108.         if (wrapper.hovered()) SetCursor();
  109.         DrawLeftPanel();
  110.         DrawCanvas();
  111. }
  112.  
  113. void SetCursor()
  114. {
  115.         if (tools[currentTool].cursor) && (!Cursor.CursorPointer) {
  116.                 Cursor.Load(tools[currentTool].cursor);
  117.                 Cursor.Set();
  118.         }
  119. }