forked from KolibriOS/kolibrios
imgedit: wip
git-svn-id: svn://kolibrios.org@9633 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
8ac91f55d4
commit
56780f0f36
@ -27,7 +27,7 @@
|
|||||||
#define TOOLBAR_W 132
|
#define TOOLBAR_W 132
|
||||||
#define STATUSBAR_H 20
|
#define STATUSBAR_H 20
|
||||||
#define HEADERH TOOLBAR_ITEM_H + 14
|
#define HEADERH TOOLBAR_ITEM_H + 14
|
||||||
#define HEADER_TEXT_Y HEADERH - 14 / 2
|
#define HEADER_TEXTY HEADERH - 14 / 2
|
||||||
#define CANVASX TOOLBAR_W + PAD + PAD
|
#define CANVASX TOOLBAR_W + PAD + PAD
|
||||||
#define CANVASY HEADERH + 2
|
#define CANVASY HEADERH + 2
|
||||||
|
|
||||||
@ -46,6 +46,7 @@ EVENTS button;
|
|||||||
EVENTS key;
|
EVENTS key;
|
||||||
|
|
||||||
proc_info Form;
|
proc_info Form;
|
||||||
|
int pressed_button_id;
|
||||||
|
|
||||||
char default_dir[4096] = "/sys";
|
char default_dir[4096] = "/sys";
|
||||||
od_filter filter2 = { 69, "BMP\0GIF\0ICO\0CUR\0JPEG\0JPG\0PNG\0PNM\0TGA\0TIFF\0TIF\0WBMP\0XBM\0XCF\Z80\0\0" };
|
od_filter filter2 = { 69, "BMP\0GIF\0ICO\0CUR\0JPEG\0JPG\0PNG\0PNM\0TGA\0TIFF\0TIF\0WBMP\0XBM\0XCF\Z80\0\0" };
|
||||||
@ -61,8 +62,8 @@ scroll_bar scroll_h = { NULL,TOOLBAR_W+PAD+PAD,15,NULL,15,2,NULL,0,0,COL_DARK,CO
|
|||||||
enum { SAVE_AS_PNG=1, SAVE_AS_BMP=2, SAVE_AS_RAW=4 };
|
enum { SAVE_AS_PNG=1, SAVE_AS_BMP=2, SAVE_AS_RAW=4 };
|
||||||
int saving_type=SAVE_AS_PNG;
|
int saving_type=SAVE_AS_PNG;
|
||||||
|
|
||||||
char* libimg_bpp[] = { "8pal", "24", "32", "15", "16",
|
char* libimg_bpp[] = { "???", "8pal", "24", "32", "15", "16",
|
||||||
"mono", "8gray", "2pal", "4pal", "8pal" };
|
"mono", "8gray", "2pal", "4pal", "8gr/a" };
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
TOOL_CROP=1,
|
TOOL_CROP=1,
|
||||||
@ -90,7 +91,6 @@ void init_ui()
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
int pressed_button_id;
|
|
||||||
load_dll(libimg, #libimg_init, 1);
|
load_dll(libimg, #libimg_init, 1);
|
||||||
load_dll(boxlib, #box_lib_init,0);
|
load_dll(boxlib, #box_lib_init,0);
|
||||||
load_dll(Proc_lib, #OpenDialog_init,0);
|
load_dll(Proc_lib, #OpenDialog_init,0);
|
||||||
@ -168,7 +168,7 @@ void draw_content()
|
|||||||
|
|
||||||
//draw title
|
//draw title
|
||||||
DrawBar(2, 2, CANVASX-2, HEADERH-1, COL_DARK);
|
DrawBar(2, 2, CANVASX-2, HEADERH-1, COL_DARK);
|
||||||
WriteText(PAD+5, HEADER_TEXT_Y, 0x90, COL_WORK_TEXT, "ImageEditor Pro");
|
WriteText(PAD+5, HEADER_TEXTY, 0x90, COL_WORK_TEXT, "ImageEditor Pro");
|
||||||
|
|
||||||
//draw header
|
//draw header
|
||||||
DrawBar(CANVASX+1, 2, Form.width-CANVASX-2, HEADERH-1, COL_WORK);
|
DrawBar(CANVASX+1, 2, Form.width-CANVASX-2, HEADERH-1, COL_WORK);
|
||||||
@ -212,7 +212,7 @@ void draw_content()
|
|||||||
void draw_status_bar()
|
void draw_status_bar()
|
||||||
{
|
{
|
||||||
char img_info[24];
|
char img_info[24];
|
||||||
sprintf(#img_info, "%i\01%i\02%s", main_image.w, main_image.h, libimg_bpp[main_image.type-1]);
|
sprintf(#img_info, "%i\01%i\02%s", main_image.w, main_image.h, libimg_bpp[main_image.type]);
|
||||||
DrawBar(CANVASX+1, Form.cheight - STATUSBAR_H - 1, Form.cwidth - CANVASX -2, STATUSBAR_H, COL_WORK);
|
DrawBar(CANVASX+1, Form.cheight - STATUSBAR_H - 1, Form.cwidth - CANVASX -2, STATUSBAR_H, COL_WORK);
|
||||||
WriteText(CANVASX+4, Form.cheight - STATUSBAR_H + 2, 0x90, COL_WORK_TEXT, #img_info);
|
WriteText(CANVASX+4, Form.cheight - STATUSBAR_H + 2, 0x90, COL_WORK_TEXT, #img_info);
|
||||||
for (ESI=0; img_info[ESI]!=0; ESI++) {
|
for (ESI=0; img_info[ESI]!=0; ESI++) {
|
||||||
@ -224,19 +224,24 @@ void draw_status_bar()
|
|||||||
$int 64
|
$int 64
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw_tool_btn(dword _event, _hotkey, _x, _y, _icon_n, _text, _active)
|
int draw_tool_btn(dword _event, _hotkey, _x, _y, _icon_n, _text, _active)
|
||||||
{
|
{
|
||||||
int w = TOOLBAR_W;
|
int w = TOOLBAR_W;
|
||||||
dword img_ptr;
|
dword img_ptr = icons18.image;
|
||||||
if (!_text) w = PAD + PAD + 6;
|
if (!_text) w = PAD + PAD + 6;
|
||||||
if (_icon_n==-1) w = strlen(_text) * 8 + 14;
|
if (_icon_n==-1) w = strlen(_text) * 8 + 14;
|
||||||
if (_active) {
|
if (_active==-1) {
|
||||||
|
EDX = COL_LINE;
|
||||||
|
$push COL_LIGHT
|
||||||
|
} else if (_active) {
|
||||||
img_ptr = icons18a.image;
|
img_ptr = icons18a.image;
|
||||||
EDX = COL_BUTTON;
|
EDX = COL_BUTTON;
|
||||||
|
$push COL_BUTTON_TEXT
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
img_ptr = icons18.image;
|
$push COL_WORK_TEXT
|
||||||
EDX = COL_LIGHT;
|
EDX = COL_LIGHT;
|
||||||
}
|
}
|
||||||
DrawBar(_x, _y, w, TOOLBAR_ITEM_H+1, EDX);
|
DrawBar(_x, _y, w, TOOLBAR_ITEM_H+1, EDX);
|
||||||
PutPixel(_x,_y,COL_WORK);
|
PutPixel(_x,_y,COL_WORK);
|
||||||
PutPixel(_x,_y+TOOLBAR_ITEM_H,COL_WORK);
|
PutPixel(_x,_y+TOOLBAR_ITEM_H,COL_WORK);
|
||||||
@ -251,10 +256,11 @@ void draw_tool_btn(dword _event, _hotkey, _x, _y, _icon_n, _text, _active)
|
|||||||
} else {
|
} else {
|
||||||
_x += 7;
|
_x += 7;
|
||||||
}
|
}
|
||||||
|
$pop EDX
|
||||||
if (_text) {
|
if (_text) {
|
||||||
if (_active) EDX = COL_BUTTON_TEXT; else EDX = COL_WORK_TEXT;
|
|
||||||
WriteText(_x, _y+6, 0x90, EDX, _text);
|
WriteText(_x, _y+6, 0x90, EDX, _text);
|
||||||
}
|
}
|
||||||
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw_canvas()
|
void draw_canvas()
|
||||||
@ -294,35 +300,77 @@ void open_image(char* _path)
|
|||||||
scroll_h.position = 0;
|
scroll_h.position = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int color_depth_id;
|
||||||
|
void event_set_color_depth() {
|
||||||
|
//debugval("buttonid", pressed_button_id);
|
||||||
|
//debugln(libimg_bpp[pressed_button_id-color_depth_id]);
|
||||||
|
img_convert stdcall(main_image.image, 0, pressed_button_id-color_depth_id, 0, 0);
|
||||||
|
if (!EAX) {
|
||||||
|
notify("'ImageEdit Pro\nConvertation error' -Et");
|
||||||
|
} else {
|
||||||
|
$push eax
|
||||||
|
img_destroy stdcall(main_image.image);
|
||||||
|
$pop eax
|
||||||
|
main_image.image = EAX;
|
||||||
|
main_image.set_vars();
|
||||||
|
draw_acive_panel();
|
||||||
|
draw_status_bar();
|
||||||
|
draw_canvas();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void draw_acive_panel()
|
void draw_acive_panel()
|
||||||
{
|
{
|
||||||
|
int i, x = CANVASX + PAD;
|
||||||
|
bool a;
|
||||||
switch(active_tool) {
|
switch(active_tool) {
|
||||||
case TOOL_CROP:
|
case TOOL_CROP:
|
||||||
WriteText(CANVASX+PAD, HEADER_TEXT_Y, 0x90, COL_WORK_TEXT, "Crop tool");
|
WriteText(CANVASX+PAD, HEADER_TEXTY, 0x90, COL_WORK_TEXT, "Crop tool");
|
||||||
break;
|
break;
|
||||||
case TOOL_RESIZE:
|
case TOOL_RESIZE:
|
||||||
WriteText(CANVASX+PAD, HEADER_TEXT_Y, 0x90, COL_WORK_TEXT, "New width");
|
WriteText(CANVASX+PAD, HEADER_TEXTY, 0x90, COL_WORK_TEXT, "New width");
|
||||||
WriteText(CANVASX+PAD+150, HEADER_TEXT_Y, 0x90, COL_WORK_TEXT, "New height");
|
WriteText(CANVASX+PAD+150, HEADER_TEXTY, 0x90, COL_WORK_TEXT, "New height");
|
||||||
draw_tool_btn(#event_rotate_left, SCAN_CODE_ENTER, CANVASX + PAD + 300, 7, -1, "Apply", false);
|
draw_tool_btn(#event_rotate_left, SCAN_CODE_ENTER, CANVASX + PAD + 300, 7, -1, "Apply", false);
|
||||||
break;
|
break;
|
||||||
case TOOL_COLOR_DEPTH:
|
case TOOL_COLOR_DEPTH:
|
||||||
WriteText(CANVASX+PAD, HEADER_TEXT_Y, 0x90, COL_WORK_TEXT, "Color depth tool");
|
WriteText(CANVASX+PAD, HEADER_TEXTY, 0x90, COL_WORK_TEXT, "Color depth");
|
||||||
|
x += 11*8 + PAD;
|
||||||
|
color_depth_id = button.new_id;
|
||||||
|
for (i=1; i<11; i++) {
|
||||||
|
if (main_image.type == i) {
|
||||||
|
//this is current image depth
|
||||||
|
a = true;
|
||||||
|
} else {
|
||||||
|
//this is image ve san set
|
||||||
|
a = false;
|
||||||
|
//probe does libimg support converting current image gepth to i-one
|
||||||
|
img_create stdcall(1, 1, main_image.type);
|
||||||
|
img_convert stdcall(EAX, 0, i, 0, 0);
|
||||||
|
if (EAX) {
|
||||||
|
img_destroy stdcall(EAX);
|
||||||
|
} else {
|
||||||
|
//continue;
|
||||||
|
a = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
x += draw_tool_btn(#event_set_color_depth, SCAN_CODE_ENTER, x, 7, -1, libimg_bpp[i], a) + PAD;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case TOOL_FLIP_ROTATE:
|
case TOOL_FLIP_ROTATE:
|
||||||
WriteText(CANVASX+PAD, HEADER_TEXT_Y, 0x90, COL_WORK_TEXT, "Flip");
|
WriteText(CANVASX+PAD, HEADER_TEXTY, 0x90, COL_WORK_TEXT, "Flip");
|
||||||
draw_tool_btn(#event_flip_hor, ECTRL + SCAN_CODE_KEY_H, CANVASX + PAD + 040, 7, 34, NULL, false);
|
draw_tool_btn(#event_flip_hor, ECTRL + SCAN_CODE_KEY_H, CANVASX + PAD + 040, 7, 34, NULL, false);
|
||||||
draw_tool_btn(#event_flip_ver, ECTRL + SCAN_CODE_KEY_V, CANVASX + PAD + 080, 7, 35, NULL, false);
|
draw_tool_btn(#event_flip_ver, ECTRL + SCAN_CODE_KEY_V, CANVASX + PAD + 080, 7, 35, NULL, false);
|
||||||
WriteText(CANVASX+PAD + 142, HEADER_TEXT_Y, 0x90, COL_WORK_TEXT, "Rotate");
|
WriteText(CANVASX+PAD + 142, HEADER_TEXTY, 0x90, COL_WORK_TEXT, "Rotate");
|
||||||
draw_tool_btn(#event_rotate_left, ECTRL + SCAN_CODE_KEY_L, CANVASX + PAD + 200, 7, 37, NULL, false);
|
draw_tool_btn(#event_rotate_left, ECTRL + SCAN_CODE_KEY_L, CANVASX + PAD + 200, 7, 37, NULL, false);
|
||||||
draw_tool_btn(#event_rotate_right, ECTRL + SCAN_CODE_KEY_R, CANVASX + PAD + 240, 7, 36, NULL, false);
|
draw_tool_btn(#event_rotate_right, ECTRL + SCAN_CODE_KEY_R, CANVASX + PAD + 240, 7, 36, NULL, false);
|
||||||
// WriteText(CANVASX+PAD + 142, HEADER_TEXT_Y, 0x90, COL_WORK_TEXT, "Move");
|
// WriteText(CANVASX+PAD + 142, HEADER_TEXTY, 0x90, COL_WORK_TEXT, "Move");
|
||||||
// DrawTopPanelButton1(#EventMoveLeft, ECTRL + SCAN_CODE_LEFT, tx.inc(GAP_B), 30);
|
// DrawTopPanelButton1(#EventMoveLeft, ECTRL + SCAN_CODE_LEFT, tx.inc(GAP_B), 30);
|
||||||
// DrawTopPanelButton1(#EventMoveRight, ECTRL + SCAN_CODE_RIGHT, tx.inc(GAP_S), 31);
|
// DrawTopPanelButton1(#EventMoveRight, ECTRL + SCAN_CODE_RIGHT, tx.inc(GAP_S), 31);
|
||||||
// DrawTopPanelButton1(#EventMoveUp, ECTRL + SCAN_CODE_UP, tx.inc(GAP_S), 32);
|
// DrawTopPanelButton1(#EventMoveUp, ECTRL + SCAN_CODE_UP, tx.inc(GAP_S), 32);
|
||||||
// DrawTopPanelButton1(#EventMoveDown, ECTRL + SCAN_CODE_DOWN, tx.inc(GAP_S), 33);
|
// DrawTopPanelButton1(#EventMoveDown, ECTRL + SCAN_CODE_DOWN, tx.inc(GAP_S), 33);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
WriteText(CANVASX+PAD, HEADER_TEXT_Y, 0x90, COL_WORK_TEXT, "Welcome to ImageEditor Pro! Try to open some file.");
|
WriteText(CANVASX+PAD, HEADER_TEXTY, 0x90, COL_WORK_TEXT, "Welcome to ImageEditor Pro! Try to open some file.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user