Subversion Repositories Kolibri OS

Rev

Rev 7259 | Rev 7262 | 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[8];
  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.         TOOL_SCREEN_COPY
  28. };
  29. #include "tools/pencil.h";
  30. #include "tools/pipette.h";
  31. #include "tools/fill.h";
  32. #include "tools/simple_figure.h";
  33. #include "tools/selection.h";
  34. #include "tools/screen_copy.h";
  35.  
  36.  
  37. void initTools()
  38. {
  39.         tools[TOOL_PENCIL].id = TOOL_PENCIL;
  40.         tools[TOOL_PENCIL].onMouseEvent = #PencilTool_onMouseEvent;
  41.         tools[TOOL_PENCIL].deactivate = #PencilTool_reset;
  42.        
  43.         tools[TOOL_PIPETTE].id = TOOL_PIPETTE;
  44.         tools[TOOL_PIPETTE].activate = #PipetteTool_activate;
  45.         tools[TOOL_PIPETTE].onMouseEvent = #PipetteTool_onMouseEvent;
  46.        
  47.         tools[TOOL_FILL].id = TOOL_FILL;
  48.         tools[TOOL_FILL].onMouseEvent = #FillTool_onMouseEvent;
  49.        
  50.         tools[TOOL_LINE].id = TOOL_LINE;
  51.         tools[TOOL_LINE].activate = #SimpleFigureTool_Reset;
  52.         tools[TOOL_LINE].deactivate = #SimpleFigureTool_Reset;
  53.         tools[TOOL_LINE].onMouseEvent = #SimpleFigureTool_onMouseEvent;
  54.         tools[TOOL_LINE].onCanvasDraw = #SimpleFigureTool_onCanvasDraw;
  55.        
  56.         tools[TOOL_RECT].id = TOOL_RECT;
  57.         tools[TOOL_RECT].activate = #SimpleFigureTool_Reset;
  58.         tools[TOOL_RECT].deactivate = #SimpleFigureTool_Reset;
  59.         tools[TOOL_RECT].onMouseEvent = #SimpleFigureTool_onMouseEvent;
  60.         tools[TOOL_RECT].onCanvasDraw = #SimpleFigureTool_onCanvasDraw;
  61.  
  62.         tools[TOOL_BAR].id = TOOL_BAR;
  63.         tools[TOOL_BAR].activate = #SimpleFigureTool_Reset;
  64.         tools[TOOL_BAR].deactivate = #SimpleFigureTool_Reset;
  65.         tools[TOOL_BAR].onMouseEvent = #SimpleFigureTool_onMouseEvent;
  66.         tools[TOOL_BAR].onCanvasDraw = #SimpleFigureTool_onCanvasDraw; 
  67.  
  68.         tools[TOOL_SELECT].id = TOOL_SELECT;
  69.         tools[TOOL_SELECT].activate = #SelectTool_activate;
  70.         tools[TOOL_SELECT].deactivate = #SelectTool_deactivate;
  71.         tools[TOOL_SELECT].onMouseEvent = #SelectTool_onMouseEvent;
  72.         tools[TOOL_SELECT].onCanvasDraw = #SelectTool_onCanvasDraw;    
  73.         tools[TOOL_SELECT].onKeyEvent = #SelectTool_onKeyEvent;
  74.  
  75.         tools[TOOL_SCREEN_COPY].id = TOOL_SCREEN_COPY;
  76.         tools[TOOL_SCREEN_COPY].activate = #ScreenCopy_activate;
  77.         tools[TOOL_SCREEN_COPY].onMouseEvent = #ScreenCopy_onMouseEvent;
  78. }
  79.  
  80.  
  81. void resetCurrentTool() {
  82.         if ((currentTool != TOOL_NONE) && (tools[currentTool].deactivate != 0)) {
  83.                 tools[currentTool].deactivate();
  84.         }
  85.         currentTool = TOOL_NONE;
  86. }
  87.  
  88. void setCurrentTool(int index) {
  89.         previousTool = currentTool;
  90.         resetCurrentTool();
  91.  
  92.         currentTool = index;
  93.        
  94.         if ((index != TOOL_NONE) && (tools[index].activate != 0))
  95.                 tools[index].activate();
  96.  
  97.         DrawLeftPanel();
  98.         DrawCanvas();
  99. }
  100.  
  101.