Subversion Repositories Kolibri OS

Rev

Rev 7257 | Rev 7260 | 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.         void (*activate)();
  8.         void (*deactivate)();
  9.         void (*onMouseEvent)(int x, int y, int lkm, int pkm);
  10.         void (*onKeyEvent)(dword keycode);
  11.         void (*onCanvasDraw)();
  12. };
  13.  
  14. int previousTool = -1;
  15. int currentTool = -1;
  16. Tool tools[7];
  17.  
  18. enum {
  19.         TOOL_NONE = -1,
  20.         TOOL_PENCIL,
  21.         TOOL_PIPETTE,
  22.         TOOL_FILL,
  23.         TOOL_LINE,
  24.         TOOL_RECT,
  25.         TOOL_BAR,
  26.         TOOL_SELECT
  27. };
  28. #include "tools/pencil.h";
  29. #include "tools/pipette.h";
  30. #include "tools/fill.h";
  31. #include "tools/selection.h";
  32. #include "tools/simple_figure.h";
  33.  
  34.  
  35. void initTools()
  36. {
  37.         tools[TOOL_PENCIL].id = TOOL_PENCIL;
  38.         tools[TOOL_PENCIL].onMouseEvent = #PencilTool_onMouseEvent;
  39.         tools[TOOL_PENCIL].deactivate = #PencilTool_reset;
  40.        
  41.         tools[TOOL_PIPETTE].id = TOOL_PIPETTE;
  42.         tools[TOOL_PIPETTE].activate = #PipetteTool_activate;
  43.         tools[TOOL_PIPETTE].onMouseEvent = #PipetteTool_onMouseEvent;
  44.        
  45.         tools[TOOL_FILL].id = TOOL_FILL;
  46.         tools[TOOL_FILL].onMouseEvent = #FillTool_onMouseEvent;
  47.        
  48.         tools[TOOL_LINE].id = TOOL_LINE;
  49.         tools[TOOL_LINE].activate = #SimpleFigureTool_Reset;
  50.         tools[TOOL_LINE].deactivate = #SimpleFigureTool_Reset;
  51.         tools[TOOL_LINE].onMouseEvent = #SimpleFigureTool_onMouseEvent;
  52.         tools[TOOL_LINE].onCanvasDraw = #SimpleFigureTool_onCanvasDraw;
  53.        
  54.         tools[TOOL_RECT].id = TOOL_RECT;
  55.         tools[TOOL_RECT].activate = #SimpleFigureTool_Reset;
  56.         tools[TOOL_RECT].deactivate = #SimpleFigureTool_Reset;
  57.         tools[TOOL_RECT].onMouseEvent = #SimpleFigureTool_onMouseEvent;
  58.         tools[TOOL_RECT].onCanvasDraw = #SimpleFigureTool_onCanvasDraw;
  59.  
  60.         tools[TOOL_BAR].id = TOOL_BAR;
  61.         tools[TOOL_BAR].activate = #SimpleFigureTool_Reset;
  62.         tools[TOOL_BAR].deactivate = #SimpleFigureTool_Reset;
  63.         tools[TOOL_BAR].onMouseEvent = #SimpleFigureTool_onMouseEvent;
  64.         tools[TOOL_BAR].onCanvasDraw = #SimpleFigureTool_onCanvasDraw; 
  65.  
  66.         tools[TOOL_SELECT].id = TOOL_SELECT;
  67.         tools[TOOL_SELECT].activate = #SelectTool_activate;
  68.         tools[TOOL_SELECT].deactivate = #SelectTool_deactivate;
  69.         tools[TOOL_SELECT].onMouseEvent = #SelectTool_onMouseEvent;
  70.         tools[TOOL_SELECT].onCanvasDraw = #SelectTool_onCanvasDraw;    
  71.         tools[TOOL_SELECT].onKeyEvent = #SelectTool_onKeyEvent;
  72. }
  73.  
  74.  
  75. void resetCurrentTool() {
  76.         if ((currentTool != TOOL_NONE) && (tools[currentTool].deactivate != 0)) {
  77.                 tools[currentTool].deactivate();
  78.         }
  79.         currentTool = TOOL_NONE;
  80. }
  81.  
  82. void setCurrentTool(int index) {
  83.         previousTool = currentTool;
  84.         resetCurrentTool();
  85.  
  86.         currentTool = index;
  87.        
  88.         if ((index != TOOL_NONE) && (tools[index].activate != 0))
  89.                 tools[index].activate();
  90.  
  91.         DrawLeftPanel();
  92.         DrawCanvas();
  93. }
  94.  
  95.