IconEdit 0.49: draw bar tool (filled rectangle)

git-svn-id: svn://kolibrios.org@7259 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2018-04-25 11:18:22 +00:00
parent 0096ee123b
commit 5959be0518
6 changed files with 89 additions and 69 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -14,22 +14,24 @@
/* === TRANSLATIONS === */ /* === TRANSLATIONS === */
#define T_WTITLE "EasyShot v1.0" #define T_WTITLE "EasyShot v1.1"
#ifdef LANG_RUS #ifdef LANG_RUS
?define T_TAKE_SCREENSHOT " ‘¤¥« âì áªà¨­è®â" ?define T_TAKE_SCREENSHOT " ‘¤¥« âì áªà¨­è®â"
?define T_SETTINGS "<EFBFBD> áâனª¨" ?define T_SETTINGS "<EFBFBD> áâனª¨"
?define T_EDITBOX_FRAME " <20>ãâì á®åà ­¥­¨ï áªà¨­è®â  " ?define T_EDITBOX_FRAME " <20>ãâì á®åà ­¥­¨ï áªà¨­è®â  "
?define T_DELAY "‡ ¤¥à¦ª  ¢ ᥪ㭤 å"
?define T_MINIMIZE "‘¢¥à­ãâì ®ª­® ¯à¨ á­¨¬ª¥" ?define T_MINIMIZE "‘¢¥à­ãâì ®ª­® ¯à¨ á­¨¬ª¥"
?define T_CONTINUOUS_SHOOTING "Continuous shooting"
?define T_DELAY "‡ ¤¥à¦ª  ¢ ᥪ㭤 å"
?define T_NO_DIR "'<27> ¯ª  ­¥ áãé¥áâ¢ã¥â!' -E" ?define T_NO_DIR "'<27> ¯ª  ­¥ áãé¥áâ¢ã¥â!' -E"
?define T_SET_PATH "‡ ¤ âì" ?define T_SET_PATH "‡ ¤ âì"
#else #else
?define T_TAKE_SCREENSHOT " Take a screenshot" ?define T_TAKE_SCREENSHOT " Take a screenshot"
?define T_SETTINGS "Settings" ?define T_SETTINGS "Settings"
?define T_EDITBOX_FRAME " Save path " ?define T_EDITBOX_FRAME " Save path "
?define T_DELAY "Delay in seconds"
?define T_MINIMIZE "Minimize window" ?define T_MINIMIZE "Minimize window"
?define T_CONTINUOUS_SHOOTING "Continuous shooting"
?define T_DELAY "Delay in seconds"
?define T_NO_DIR "'Directory does not exists!' -E" ?define T_NO_DIR "'Directory does not exists!' -E"
?define T_SET_PATH "Set" ?define T_SET_PATH "Set"
#endif #endif
@ -58,6 +60,7 @@ edit_box edit_save = {250,25,100,0xffffff,0x94AECE,0xFFFfff,0xffffff,
more_less_box delay = { 1, 0, 64, T_DELAY }; more_less_box delay = { 1, 0, 64, T_DELAY };
checkbox minimize = { T_MINIMIZE, true }; checkbox minimize = { T_MINIMIZE, true };
checkbox continuous_shooting = { T_CONTINUOUS_SHOOTING, true };
opendialog open_folder_dialog = opendialog open_folder_dialog =
@ -128,7 +131,7 @@ void main()
void DrawMainContent() void DrawMainContent()
{ {
int take_scr_btn_width; int take_scr_btn_width;
take_scr_btn_width = DrawIconButton(PD, PD, BTN_MAKE_SCREENSHOT, T_TAKE_SCREENSHOT, 44); take_scr_btn_width = DrawIconButton(PD, PD, BTN_MAKE_SCREENSHOT, T_TAKE_SCREENSHOT, 45);
DrawIconButton(PD+take_scr_btn_width, PD, BTN_SETTINGS, " ", 10); DrawIconButton(PD+take_scr_btn_width, PD, BTN_SETTINGS, " ", 10);
} }

View File

@ -6,8 +6,8 @@
// // // //
////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////
//The 'draw[]' in the array which holds the states should we draw a pixel or not. //The 'draw[]' is the array which holds the states should we draw a pixel or not.
//Is need to decrese redraw when using some tools like line, rectangle and selection. //Is need to decrease redraw when using some tools like line, rectangle and selection.
struct _pixel_state struct _pixel_state
{ {

View File

@ -31,7 +31,7 @@ pipet aside color view
// // // //
//===================================================// //===================================================//
#define T_TITLE "Icon Editor 0.48 Alpha" #define T_TITLE "Icon Editor 0.49 Alpha"
#define TOOLBAR_H 24+8 #define TOOLBAR_H 24+8
#define PANEL_LEFT_W 16+5+5+3+3 #define PANEL_LEFT_W 16+5+5+3+3
@ -80,7 +80,9 @@ enum {
BTN_FILL, BTN_FILL,
BTN_LINE, BTN_LINE,
BTN_RECT, BTN_RECT,
BTN_BAR,
BTN_SELECT, BTN_SELECT,
BTN_SCREEN,
BTN_ZOOM_IN, BTN_ZOOM_IN,
BTN_ZOOM_OUT, BTN_ZOOM_OUT,
BTNS_PALETTE_COLOR_MAS = 100, BTNS_PALETTE_COLOR_MAS = 100,
@ -254,11 +256,9 @@ void main()
break; break;
case BTN_PICK: case BTN_PICK:
setCurrentTool(TOOL_PIPETTE); setCurrentTool(TOOL_PIPETTE);
//EventPickActivate();
break; break;
case BTN_FILL: case BTN_FILL:
setCurrentTool(TOOL_FILL); setCurrentTool(TOOL_FILL);
//EventFillActivate();
break; break;
case BTN_LINE: case BTN_LINE:
setCurrentTool(TOOL_LINE); setCurrentTool(TOOL_LINE);
@ -266,6 +266,9 @@ void main()
case BTN_RECT: case BTN_RECT:
setCurrentTool(TOOL_RECT); setCurrentTool(TOOL_RECT);
break; break;
case BTN_BAR:
setCurrentTool(TOOL_BAR);
break;
case BTN_SELECT: case BTN_SELECT:
setCurrentTool(TOOL_SELECT); setCurrentTool(TOOL_SELECT);
break; break;
@ -372,7 +375,9 @@ void DrawLeftPanel()
DrawLeftPanelButton(BTN_FILL, ty.inc(TB_ICON_PADDING), 40); DrawLeftPanelButton(BTN_FILL, ty.inc(TB_ICON_PADDING), 40);
DrawLeftPanelButton(BTN_LINE, ty.inc(TB_ICON_PADDING), 41); DrawLeftPanelButton(BTN_LINE, ty.inc(TB_ICON_PADDING), 41);
DrawLeftPanelButton(BTN_RECT, ty.inc(TB_ICON_PADDING), 42); DrawLeftPanelButton(BTN_RECT, ty.inc(TB_ICON_PADDING), 42);
DrawLeftPanelButton(BTN_SELECT, ty.inc(TB_ICON_PADDING), 43); DrawLeftPanelButton(BTN_BAR, ty.inc(TB_ICON_PADDING), 43);
DrawLeftPanelButton(BTN_SELECT, ty.inc(TB_ICON_PADDING), 44);
//DrawLeftPanelButton(BTN_SCREEN, ty.inc(TB_ICON_PADDING), 45);
DrawRectangle3D(5, currentTool*TB_ICON_PADDING+right_bar.y, 16+3+2, 16+3+2, 0x333333, 0x777777); DrawRectangle3D(5, currentTool*TB_ICON_PADDING+right_bar.y, 16+3+2, 16+3+2, 0x333333, 0x777777);
} }

View File

@ -13,7 +13,7 @@ struct Tool {
int previousTool = -1; int previousTool = -1;
int currentTool = -1; int currentTool = -1;
Tool tools[6]; Tool tools[7];
enum { enum {
TOOL_NONE = -1, TOOL_NONE = -1,
@ -22,6 +22,7 @@ enum {
TOOL_FILL, TOOL_FILL,
TOOL_LINE, TOOL_LINE,
TOOL_RECT, TOOL_RECT,
TOOL_BAR,
TOOL_SELECT TOOL_SELECT
}; };
#include "tools/pencil.h"; #include "tools/pencil.h";
@ -33,35 +34,41 @@ enum {
void initTools() void initTools()
{ {
tools[0].id = TOOL_PENCIL; tools[TOOL_PENCIL].id = TOOL_PENCIL;
tools[0].onMouseEvent = #PencilTool_onMouseEvent; tools[TOOL_PENCIL].onMouseEvent = #PencilTool_onMouseEvent;
tools[0].deactivate = #PencilTool_reset; tools[TOOL_PENCIL].deactivate = #PencilTool_reset;
tools[1].id = TOOL_PIPETTE; tools[TOOL_PIPETTE].id = TOOL_PIPETTE;
tools[1].activate = #PipetteTool_activate; tools[TOOL_PIPETTE].activate = #PipetteTool_activate;
tools[1].onMouseEvent = #PipetteTool_onMouseEvent; tools[TOOL_PIPETTE].onMouseEvent = #PipetteTool_onMouseEvent;
tools[2].id = TOOL_FILL; tools[TOOL_FILL].id = TOOL_FILL;
tools[2].onMouseEvent = #FillTool_onMouseEvent; tools[TOOL_FILL].onMouseEvent = #FillTool_onMouseEvent;
tools[3].id = TOOL_LINE; tools[TOOL_LINE].id = TOOL_LINE;
tools[3].activate = #SimpleFigureTool_Reset; tools[TOOL_LINE].activate = #SimpleFigureTool_Reset;
tools[3].deactivate = #SimpleFigureTool_Reset; tools[TOOL_LINE].deactivate = #SimpleFigureTool_Reset;
tools[3].onMouseEvent = #SimpleFigureTool_onMouseEvent; tools[TOOL_LINE].onMouseEvent = #SimpleFigureTool_onMouseEvent;
tools[3].onCanvasDraw = #SimpleFigureTool_onCanvasDraw; tools[TOOL_LINE].onCanvasDraw = #SimpleFigureTool_onCanvasDraw;
tools[4].id = TOOL_RECT; tools[TOOL_RECT].id = TOOL_RECT;
tools[4].activate = #SimpleFigureTool_Reset; tools[TOOL_RECT].activate = #SimpleFigureTool_Reset;
tools[4].deactivate = #SimpleFigureTool_Reset; tools[TOOL_RECT].deactivate = #SimpleFigureTool_Reset;
tools[4].onMouseEvent = #SimpleFigureTool_onMouseEvent; tools[TOOL_RECT].onMouseEvent = #SimpleFigureTool_onMouseEvent;
tools[4].onCanvasDraw = #SimpleFigureTool_onCanvasDraw; tools[TOOL_RECT].onCanvasDraw = #SimpleFigureTool_onCanvasDraw;
tools[5].id = TOOL_SELECT; tools[TOOL_BAR].id = TOOL_BAR;
tools[5].activate = #SelectTool_activate; tools[TOOL_BAR].activate = #SimpleFigureTool_Reset;
tools[5].deactivate = #SelectTool_deactivate; tools[TOOL_BAR].deactivate = #SimpleFigureTool_Reset;
tools[5].onMouseEvent = #SelectTool_onMouseEvent; tools[TOOL_BAR].onMouseEvent = #SimpleFigureTool_onMouseEvent;
tools[5].onCanvasDraw = #SelectTool_onCanvasDraw; tools[TOOL_BAR].onCanvasDraw = #SimpleFigureTool_onCanvasDraw;
tools[5].onKeyEvent = #SelectTool_onKeyEvent;
tools[TOOL_SELECT].id = TOOL_SELECT;
tools[TOOL_SELECT].activate = #SelectTool_activate;
tools[TOOL_SELECT].deactivate = #SelectTool_deactivate;
tools[TOOL_SELECT].onMouseEvent = #SelectTool_onMouseEvent;
tools[TOOL_SELECT].onCanvasDraw = #SelectTool_onCanvasDraw;
tools[TOOL_SELECT].onKeyEvent = #SelectTool_onKeyEvent;
} }
@ -85,9 +92,3 @@ void setCurrentTool(int index) {
DrawCanvas(); DrawCanvas();
} }
//===================================================//
// //
// FUNTIONS //
// //
//===================================================//

View File

@ -23,6 +23,8 @@ int mouseY_last;
bool first_click_in_canvas = false; bool first_click_in_canvas = false;
void SimpleFigureTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { void SimpleFigureTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
int x1, y1, x2, y2;
if (mouse.down) && (canvas.hovered()) first_click_in_canvas = true; if (mouse.down) && (canvas.hovered()) first_click_in_canvas = true;
if (first_click_in_canvas) if (first_click_in_canvas)
{ {
@ -50,21 +52,21 @@ void SimpleFigureTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
if (mouse.up) { if (mouse.up) {
if ((figTool.startX >= 0) if ((figTool.startX >= 0)
&& (figTool.startY >= 0)) { && (figTool.startY >= 0)) {
x1 = figTool.startX - canvas.x/zoom.value;
y1 = figTool.startY - canvas.y/zoom.value;
x2 = mouseX - canvas.x/zoom.value;
y2 = mouseY - canvas.y/zoom.value;
// Draw line from start position to current position // Draw line from start position to current position
if (currentTool == TOOL_LINE) { if (currentTool == TOOL_LINE) {
DrawLineIcon(figTool.startX - canvas.x/zoom.value, DrawLineIcon(x1, y1, x2, y2, tool_color, TOIMAGE);
figTool.startY - canvas.y/zoom.value,
mouseX - canvas.x/zoom.value,
mouseY - canvas.y/zoom.value,
tool_color,
TOIMAGE);
} }
else if (currentTool == TOOL_RECT) { else if (currentTool == TOOL_RECT) {
DrawRectangleIcon(figTool.startX - canvas.x/zoom.value, DrawRectangleIcon(x1, y1, x2, y2, tool_color, TOIMAGE);
figTool.startY - canvas.y/zoom.value, }
mouseX - canvas.x/zoom.value, else if (currentTool == TOOL_BAR) {
mouseY - canvas.y/zoom.value, tool_color, DrawBarIcon(x1, y1, x2, y2, tool_color, TOIMAGE);
TOIMAGE);
} }
DrawCanvas(); DrawCanvas();
@ -82,24 +84,21 @@ void SimpleFigureTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
} }
void SimpleFigureTool_onCanvasDraw() { void SimpleFigureTool_onCanvasDraw() {
int x1, y1, x2, y2;
if ((figTool.startX >= 0) if ((figTool.startX >= 0)
&& (figTool.startY >= 0) && (mouse.key)) { && (figTool.startY >= 0) && (mouse.key)) {
if (currentTool == TOOL_LINE) {
DrawLineIcon(figTool.startX - canvas.x/zoom.value, x1 = figTool.startX - canvas.x/zoom.value;
figTool.startY - canvas.y/zoom.value, y1 = figTool.startY - canvas.y/zoom.value;
mouseX_last - canvas.x/zoom.value, x2 = mouseX_last - canvas.x/zoom.value;
mouseY_last - canvas.y/zoom.value, y2 = mouseY_last - canvas.y/zoom.value;
tool_color,
TOCANVAS); if (currentTool == TOOL_LINE)
} DrawLineIcon(x1, y1, x2, y2, tool_color, TOCANVAS);
else if (currentTool == TOOL_RECT) { else if (currentTool == TOOL_RECT)
DrawRectangleIcon(figTool.startX - canvas.x/zoom.value, DrawRectangleIcon(x1, y1, x2, y2, tool_color, TOCANVAS);
figTool.startY - canvas.y/zoom.value, else if (currentTool == TOOL_BAR)
mouseX_last - canvas.x/zoom.value, DrawBarIcon(x1, y1, x2, y2, tool_color, TOCANVAS);
mouseY_last - canvas.y/zoom.value,
tool_color,
TOCANVAS);
}
figTool.lastTempPosX = mouseX_last - canvas.x/zoom.value; figTool.lastTempPosX = mouseX_last - canvas.x/zoom.value;
figTool.lastTempPosY = mouseY_last - canvas.y/zoom.value; figTool.lastTempPosY = mouseY_last - canvas.y/zoom.value;
@ -178,3 +177,15 @@ void DrawRectangleIcon(int x1, int y1, int x2, int y2, dword color, int target)
DrawLineIcon(x1, y2, x1, y1, color, target); DrawLineIcon(x1, y2, x1, y1, color, target);
} }
void DrawBarIcon(int x1, int y1, int x2, int y2, dword color, int target) {
signed signY;
if (y1 < y2)
signY = 1;
else
signY = -1;
while (y1 != y2+signY) {
DrawLineIcon(x1, y1, x2, y1, color, target);
y1 += signY;
}
}