iconedit 0.35: implement preview, block hover, use mouse events instead of buttons
git-svn-id: svn://kolibrios.org@7200 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
53a4fd1aef
commit
a3399b26ae
Binary file not shown.
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.7 KiB |
@ -28,7 +28,7 @@ pipet aside color view
|
|||||||
// //
|
// //
|
||||||
//===================================================//
|
//===================================================//
|
||||||
|
|
||||||
#define T_TITLE "Icon Editor 0.33"
|
#define T_TITLE "Icon Editor 0.35"
|
||||||
|
|
||||||
#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
|
||||||
@ -37,10 +37,27 @@ pipet aside color view
|
|||||||
|
|
||||||
#define PAL_ITEMS_X_COUNT 13
|
#define PAL_ITEMS_X_COUNT 13
|
||||||
#define COLSIZE 18
|
#define COLSIZE 18
|
||||||
|
#define RIGHT_BAR_W PAL_ITEMS_X_COUNT*COLSIZE
|
||||||
|
|
||||||
rect wrapper = { PANEL_LEFT_W, TOOLBAR_H, NULL, NULL };
|
struct block {
|
||||||
rect right_bar = { NULL, TOOLBAR_H, PAL_ITEMS_X_COUNT*COLSIZE+10, NULL };
|
int x,y,w,h;
|
||||||
rect canvas = { NULL, NULL, NULL, NULL };
|
bool hovered();
|
||||||
|
};
|
||||||
|
|
||||||
|
bool block::hovered() {
|
||||||
|
if ((mouse.x>x) && (mouse.y>y)
|
||||||
|
&& (mouse.y<y+h) && (mouse.x<x+w))
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
block canvas = { NULL, NULL, NULL, NULL };
|
||||||
|
block wrapper = { PANEL_LEFT_W, TOOLBAR_H, NULL, NULL };
|
||||||
|
block right_bar = { NULL, TOOLBAR_H, RIGHT_BAR_W+10, NULL };
|
||||||
|
|
||||||
|
block b_color_gradient = {NULL, 30+TOOLBAR_H, RIGHT_BAR_W, 30};
|
||||||
|
block b_last_colors = {NULL, 70+TOOLBAR_H, RIGHT_BAR_W, COLSIZE*2};
|
||||||
|
block b_default_palette = {NULL, COLSIZE*2+10+70+TOOLBAR_H, RIGHT_BAR_W, COLSIZE*9};
|
||||||
|
|
||||||
dword active_color_1 = 0x000000;
|
dword active_color_1 = 0x000000;
|
||||||
dword active_color_2 = 0xFFFfff;
|
dword active_color_2 = 0xFFFfff;
|
||||||
@ -145,9 +162,7 @@ void FillTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
|
|||||||
bool fill1=false;
|
bool fill1=false;
|
||||||
bool fill2=false;
|
bool fill2=false;
|
||||||
|
|
||||||
if (mouseX>canvas.x) && (mouseY>canvas.y)
|
if (canvas.hovered())
|
||||||
&& (mouseY<canvas.y+canvas.h)
|
|
||||||
&& (mouseX<canvas.x+canvas.w)
|
|
||||||
{
|
{
|
||||||
if (currentTool==TOOL_FILL)
|
if (currentTool==TOOL_FILL)
|
||||||
{
|
{
|
||||||
@ -175,7 +190,7 @@ void PipetteTool_activate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PipetteTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
|
void PipetteTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
|
||||||
active_color_1 = GetPixelColorFromScreen(mouseX + Form.left + 5, mouseY + Form.top + skin_height);
|
active_color_1 = GetPixelUnderMouse();
|
||||||
DrawActiveColor(NULL);
|
DrawActiveColor(NULL);
|
||||||
|
|
||||||
if (mouse.down) && (mouse.key&MOUSE_LEFT) {
|
if (mouse.down) && (mouse.key&MOUSE_LEFT) {
|
||||||
@ -187,9 +202,7 @@ void PipetteTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PencilTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
|
void PencilTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
|
||||||
if (mouseX>canvas.x) && (mouseY>canvas.y)
|
if (canvas.hovered())
|
||||||
&& (mouseY<canvas.y+canvas.h)
|
|
||||||
&& (mouseX<canvas.x+canvas.w)
|
|
||||||
{
|
{
|
||||||
if (lkm)
|
if (lkm)
|
||||||
image.set_pixel(mouseY-canvas.y/zoom.value,
|
image.set_pixel(mouseY-canvas.y/zoom.value,
|
||||||
@ -217,9 +230,7 @@ void LineTool_reset() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void LineTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
|
void LineTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
|
||||||
if ((mouseX>canvas.x) && (mouseY>canvas.y)
|
if (canvas.hovered())
|
||||||
&& (mouseY<canvas.y+canvas.h)
|
|
||||||
&& (mouseX<canvas.x+canvas.w))
|
|
||||||
{
|
{
|
||||||
if (mouse.down) && (mouse.key & MOUSE_LEFT) {
|
if (mouse.down) && (mouse.key & MOUSE_LEFT) {
|
||||||
if ((LineTool_startX < 0) || (LineTool_startY < 0)) {
|
if ((LineTool_startX < 0) || (LineTool_startY < 0)) {
|
||||||
@ -391,6 +402,15 @@ void main()
|
|||||||
DrawEditArea();
|
DrawEditArea();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mouse.down) {
|
||||||
|
if (b_color_gradient.hovered())
|
||||||
|
|| (b_last_colors.hovered())
|
||||||
|
|| (b_default_palette.hovered()) {
|
||||||
|
if (mouse.key&MOUSE_LEFT) EventSetActiveColor(1, GetPixelUnderMouse());
|
||||||
|
if (mouse.key&MOUSE_RIGHT) EventSetActiveColor(2, GetPixelUnderMouse());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case evButton:
|
case evButton:
|
||||||
@ -459,17 +479,6 @@ void main()
|
|||||||
case CLOSE_BTN:
|
case CLOSE_BTN:
|
||||||
ExitProcess();
|
ExitProcess();
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
if (btn >= BTNS_PALETTE_COLOR_MAS) && (btn <= BTNS_PALETTE_COLOR_MAS+PALLETE_SIZE)
|
|
||||||
{
|
|
||||||
if (mouse.lkm) EventSetActiveColor(1, default_palette[btn - BTNS_PALETTE_COLOR_MAS]);
|
|
||||||
if (mouse.pkm) EventSetActiveColor(2, default_palette[btn - BTNS_PALETTE_COLOR_MAS]);
|
|
||||||
}
|
|
||||||
if (btn >= BTNS_LAST_USED_COLORS) && (btn < sizeof(last_used_colors)*sizeof(dword))
|
|
||||||
{
|
|
||||||
if (mouse.lkm) active_color_1 = last_used_colors[btn - BTNS_LAST_USED_COLORS];
|
|
||||||
if (mouse.pkm) active_color_2 = last_used_colors[btn - BTNS_LAST_USED_COLORS];
|
|
||||||
DrawActiveColor(NULL);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -527,6 +536,7 @@ void draw_window()
|
|||||||
if (Form.height < 430) { MoveSize(OLD,OLD,OLD,430); return; }
|
if (Form.height < 430) { MoveSize(OLD,OLD,OLD,430); return; }
|
||||||
|
|
||||||
right_bar.x = Form.cwidth - right_bar.w;
|
right_bar.x = Form.cwidth - right_bar.w;
|
||||||
|
b_color_gradient.x = b_last_colors.x = b_default_palette.x = right_bar.x;
|
||||||
|
|
||||||
tx.n = 10-TB_ICON_PADDING;
|
tx.n = 10-TB_ICON_PADDING;
|
||||||
DrawToolbarButton(BTN_NEW, tx.inc(TB_ICON_PADDING), 2); //not implemented
|
DrawToolbarButton(BTN_NEW, tx.inc(TB_ICON_PADDING), 2); //not implemented
|
||||||
@ -547,7 +557,7 @@ void draw_window()
|
|||||||
DrawEditArea();
|
DrawEditArea();
|
||||||
|
|
||||||
DrawActiveColor(right_bar.y);
|
DrawActiveColor(right_bar.y);
|
||||||
DrawColorPallets(right_bar.x, right_bar.y + 70);
|
DrawColorPallets();
|
||||||
|
|
||||||
DrawStatusBar();
|
DrawStatusBar();
|
||||||
}
|
}
|
||||||
@ -621,50 +631,45 @@ void DrawActiveColor(dword iny)
|
|||||||
sprintf(#param, "%A", active_color_2);
|
sprintf(#param, "%A", active_color_2);
|
||||||
EDI = system.color.work;
|
EDI = system.color.work;
|
||||||
WriteText(right_bar.x+110 + 30, outy + 3, 0xD0, system.color.work_text, #param+4);
|
WriteText(right_bar.x+110 + 30, outy + 3, 0xD0, system.color.work_text, #param+4);
|
||||||
DrawCurrentColorGradientByLightness(right_bar.x, outy+30);
|
DrawCurrentColorGradientByLightness();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawCurrentColorGradientByLightness(int x, y)
|
void DrawCurrentColorGradientByLightness()
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int w = right_bar.w-10/2;
|
int w = right_bar.w-10/2;
|
||||||
int h = 30;
|
|
||||||
for (i=0; i<w; i++)
|
for (i=0; i<w; i++)
|
||||||
DrawBar(x+i, y, 1, h, MixColors(active_color_1,0xFFFfff,255*i/w));
|
DrawBar(b_color_gradient.x+i, b_color_gradient.y,
|
||||||
|
1, b_color_gradient.h, MixColors(active_color_1,0xFFFfff,255*i/w));
|
||||||
for (i=0 ; i<=w; i++)
|
for (i=0 ; i<=w; i++)
|
||||||
DrawBar(x+w+w-i, y, 1, h, MixColors(active_color_1,0x000000,255*i/w));
|
DrawBar(b_color_gradient.x+w+w-i, b_color_gradient.y,
|
||||||
|
1, b_color_gradient.h, MixColors(active_color_1,0x000000,255*i/w));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawColorPallets(dword _x, _y)
|
void DrawColorPallets()
|
||||||
{
|
{
|
||||||
int r, c, i=0;
|
int r, c, i=0;
|
||||||
|
|
||||||
//Last used colors
|
//Last used colors
|
||||||
for (r = 0; r < 2; r++)
|
for (r = 0; r < 2; r++)
|
||||||
{
|
{
|
||||||
for (c = 0; c < PAL_ITEMS_X_COUNT; c++, i++)
|
for (c = 0; c < PAL_ITEMS_X_COUNT; c++, i++)
|
||||||
{
|
{
|
||||||
DrawBar(c*COLSIZE + _x, r*COLSIZE + _y, COLSIZE, COLSIZE, last_used_colors[i]);
|
DrawBar(c*COLSIZE + b_last_colors.x, r*COLSIZE + b_last_colors.y,
|
||||||
DefineHiddenButton(c*COLSIZE + _x, r*COLSIZE + _y, COLSIZE-1, COLSIZE-1, BTNS_LAST_USED_COLORS+i);
|
COLSIZE, COLSIZE, last_used_colors[i]);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_y += r*COLSIZE + 10;
|
|
||||||
i=0;
|
i=0;
|
||||||
|
|
||||||
//Default colors
|
//Default colors
|
||||||
for (r = 0; r < 9; r++)
|
for (r = 0; r < 9; r++)
|
||||||
{
|
{
|
||||||
for (c = 0; c < PAL_ITEMS_X_COUNT; c++, i++)
|
for (c = 0; c < PAL_ITEMS_X_COUNT; c++, i++)
|
||||||
{
|
{
|
||||||
DrawBar(c*COLSIZE + _x, r*COLSIZE + _y, COLSIZE, COLSIZE, default_palette[PALLETE_SIZE-i]);
|
DrawBar(c*COLSIZE + b_default_palette.x, r*COLSIZE + b_default_palette.y,
|
||||||
DefineHiddenButton(c*COLSIZE + _x, r*COLSIZE + _y, COLSIZE-1, COLSIZE-1, BTNS_PALETTE_COLOR_MAS+PALLETE_SIZE-i);
|
COLSIZE, COLSIZE, default_palette[PALLETE_SIZE-i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DrawCanvas()
|
void DrawCanvas()
|
||||||
{
|
{
|
||||||
int r, c;
|
int r, c;
|
||||||
@ -680,8 +685,21 @@ void DrawCanvas()
|
|||||||
if ((currentTool != TOOL_NONE) && (tools[currentTool].onCanvasDraw != 0))
|
if ((currentTool != TOOL_NONE) && (tools[currentTool].onCanvasDraw != 0))
|
||||||
tools[currentTool].onCanvasDraw();
|
tools[currentTool].onCanvasDraw();
|
||||||
|
|
||||||
|
DrawPreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DrawPreview()
|
||||||
|
{
|
||||||
|
int x = right_bar.x;
|
||||||
|
int y = wrapper.y + wrapper.h - image.rows-2;
|
||||||
|
DrawRectangle(x, y, image.columns+1, image.rows+1, system.color.work_graph);
|
||||||
|
_PutImage(x+1,y+1, image.columns, image.rows, image.get_image());
|
||||||
|
}
|
||||||
|
|
||||||
|
dword GetPixelUnderMouse()
|
||||||
|
{
|
||||||
|
return GetPixelColorFromScreen(mouse.x + Form.left + 5, mouse.y + Form.top + skin_height);
|
||||||
|
}
|
||||||
|
|
||||||
//===================================================//
|
//===================================================//
|
||||||
// //
|
// //
|
||||||
@ -734,7 +752,7 @@ void EventSetActiveColor(int _number, _color)
|
|||||||
if (_number == 2) active_color_2 = _color;
|
if (_number == 2) active_color_2 = _color;
|
||||||
|
|
||||||
DrawActiveColor(NULL);
|
DrawActiveColor(NULL);
|
||||||
DrawColorPallets(right_bar.x, right_bar.y + 70);
|
DrawColorPallets();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventFill(dword _r, _c, _color)
|
void EventFill(dword _r, _c, _color)
|
||||||
@ -770,12 +788,12 @@ void EventFill(dword _r, _c, _color)
|
|||||||
void DrawLine(int x1, int y1, int x2, int y2, dword color, int target) {
|
void DrawLine(int x1, int y1, int x2, int y2, dword color, int target) {
|
||||||
int dx, dy, signX, signY, error, error2;
|
int dx, dy, signX, signY, error, error2;
|
||||||
|
|
||||||
debugval("Draw line", x1);
|
// debugval("Draw line", x1);
|
||||||
debugval("Draw line", y1);
|
// debugval("Draw line", y1);
|
||||||
|
|
||||||
debugval("Draw line", x2);
|
// debugval("Draw line", x2);
|
||||||
debugval("Draw line", y2);
|
// debugval("Draw line", y2);
|
||||||
debugln("===");
|
// debugln("===");
|
||||||
dx = x2 - x1;
|
dx = x2 - x1;
|
||||||
|
|
||||||
if (dx < 0)
|
if (dx < 0)
|
||||||
|
@ -271,11 +271,11 @@ void DrawTopPanel()
|
|||||||
button_y = 46;
|
button_y = 46;
|
||||||
img_draw stdcall(skin.image, 0, 0, skin.w, skin.h, 0, 0);
|
img_draw stdcall(skin.image, 0, 0, skin.w, skin.h, 0, 0);
|
||||||
if (playback_mode != PLAYBACK_MODE_STOPED)
|
if (playback_mode != PLAYBACK_MODE_STOPED)
|
||||||
img_draw stdcall(skin.image, 46, button_y, 41, 21, skin.w+1, WIN_H_SMALL+1);
|
img_draw stdcall(skin.image, 47, button_y, 41, 21, skin.w+1, WIN_H_SMALL+1);
|
||||||
if (repeat)
|
if (repeat)
|
||||||
img_draw stdcall(skin.image, 177, button_y+2, 17,17,skin.w+43, WIN_H_SMALL+1);
|
img_draw stdcall(skin.image, 217, button_y+2, 17,17,skin.w+43, WIN_H_SMALL+1);
|
||||||
if (shuffle)
|
if (shuffle)
|
||||||
img_draw stdcall(skin.image, 196, button_y+2, 17,17, skin.w+62, WIN_H_SMALL+1);
|
img_draw stdcall(skin.image, 236, button_y+2, 17,17, skin.w+62, WIN_H_SMALL+1);
|
||||||
|
|
||||||
if (!work_folder) DrawPixieTitle("Pixie");
|
if (!work_folder) DrawPixieTitle("Pixie");
|
||||||
else DrawPixieTitle(#work_folder + strrchr(#work_folder, '/'));
|
else DrawPixieTitle(#work_folder + strrchr(#work_folder, '/'));
|
||||||
@ -284,17 +284,17 @@ void DrawTopPanel()
|
|||||||
if (kfont_width>skin.w-15) DrawBar(skin.w-1, 24, 1, list.item_h, theme.color_list_border);
|
if (kfont_width>skin.w-15) DrawBar(skin.w-1, 24, 1, list.item_h, theme.color_list_border);
|
||||||
//Playing control buttons
|
//Playing control buttons
|
||||||
DefineHiddenButton(7, button_y, 38, 20, BUTTON_PLAYBACK_PREV);
|
DefineHiddenButton(7, button_y, 38, 20, BUTTON_PLAYBACK_PREV);
|
||||||
DefineHiddenButton(47, button_y, 38, 20, BUTTON_PLAYBACK_PLAY_PAUSE);
|
DefineHiddenButton(48, button_y, 38, 20, BUTTON_PLAYBACK_PLAY_PAUSE);
|
||||||
DefineHiddenButton(87, button_y, 38, 20, BUTTON_PLAYBACK_NEXT);
|
DefineHiddenButton(87, button_y, 38, 20, BUTTON_PLAYBACK_NEXT);
|
||||||
//Window control buttons
|
//Window control buttons
|
||||||
DefineHiddenButton(Form.width - 27, 1, 26, 15, BUTTON_WINDOW_CLOSE);
|
DefineHiddenButton(Form.width - 27, 1, 26, 15, BUTTON_WINDOW_CLOSE);
|
||||||
DefineHiddenButton(Form.width - 55, 1, 26, 15, BUTTON_WINDOW_MINIMIZE);
|
DefineHiddenButton(Form.width - 55, 1, 26, 15, BUTTON_WINDOW_MINIMIZE);
|
||||||
DefineHiddenButton(Form.width - 83, 1, 26, 15, BUTTON_WINDOW_REDUCE);
|
DefineHiddenButton(Form.width - 83, 1, 26, 15, BUTTON_WINDOW_REDUCE);
|
||||||
//Other buttons
|
//Other buttons
|
||||||
DefineHiddenButton(Form.width - 53, button_y, 22, 20, BUTTON_OPEN_DIALOG);
|
DefineHiddenButton(218, button_y+3, 17, 16, BUTTON_REPEAT);
|
||||||
DefineHiddenButton(Form.width - 29, button_y, 22, 20, BUTTON_SHOW_VOLUME);
|
DefineHiddenButton(237, button_y+3, 17, 16, BUTTON_SHUFFLE);
|
||||||
DefineHiddenButton(178, button_y+3, 17, 16, BUTTON_REPEAT);
|
DefineHiddenButton(270, button_y+3, 17, 16, BUTTON_OPEN_DIALOG);
|
||||||
DefineHiddenButton(197, button_y+3, 17, 16, BUTTON_SHUFFLE);
|
DefineHiddenButton(289, button_y+3, 17, 16, BUTTON_SHOW_VOLUME);
|
||||||
}
|
}
|
||||||
else if (window_mode == WINDOW_MODE_SMALL)
|
else if (window_mode == WINDOW_MODE_SMALL)
|
||||||
{
|
{
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.1 KiB |
Loading…
Reference in New Issue
Block a user