From e507f8bd35acebfaddd70a95c07c4cea0a57c41f Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Thu, 8 Feb 2018 16:47:35 +0000 Subject: [PATCH] IconEditor: fix FLIP_HOR, add FLIP_VER, fix zoom value for some cases, fix BMP was flipped vertically when saved git-svn-id: svn://kolibrios.org@7154 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/cmm/iconedit/colors_mas.h | 100 +++++++++++++++-------------- programs/cmm/iconedit/iconedit.c | 9 +-- 2 files changed, 58 insertions(+), 51 deletions(-) diff --git a/programs/cmm/iconedit/colors_mas.h b/programs/cmm/iconedit/colors_mas.h index 77de42fe8f..3edad4df88 100644 --- a/programs/cmm/iconedit/colors_mas.h +++ b/programs/cmm/iconedit/colors_mas.h @@ -56,54 +56,60 @@ void _colors::move(int _direction) int r, c; dword first_element_data; - if (_direction == MOVE_LEFT) + switch(_direction) { - for (r = 0; r < rows; r++) - { - first_element_data = get_pixel(r, 0); - for (c = 0; c < columns-1; c++) set_pixel(r, c, get_pixel(r, c+1)); - set_pixel(r, columns-1, first_element_data); - } - } - if (_direction == MOVE_RIGHT) - { - for (r = 0; r < rows; r++) - { - first_element_data = get_pixel(r, columns-1); - for (c = columns-1; c > 0; c--) set_pixel(r, c, get_pixel(r, c-1)); - set_pixel(r, 0, first_element_data); - } - } - if (_direction == MOVE_UP) - { - for (c = 0; c < columns; c++) - { - first_element_data = get_pixel(0, c); - for (r = 0; r < rows-1; r++) set_pixel(r, c, get_pixel(r+1, c)); - set_pixel(rows-1, c, first_element_data); - } - } - if (_direction == MOVE_DOWN) - { - for (c = 0; c < columns; c++) - { - first_element_data = get_pixel(rows-1, c); - for (r = rows-1; r > 0; r--) set_pixel(r, c, get_pixel(r-1, c)); - set_pixel(0, c, first_element_data); - } - } - - - if (_direction == FLIP_HOR) - { - for (r = 0; r < rows; r++) - { - for (c = 0; c < columns/2; c++) { - first_element_data = get_pixel(r, c); - set_pixel(r, c, get_pixel(r, columns-c)); - set_pixel(r, columns-c, first_element_data); - } - } + case MOVE_LEFT: + for (r = 0; r < rows; r++) + { + first_element_data = get_pixel(r, 0); + for (c = 0; c < columns-1; c++) set_pixel(r, c, get_pixel(r, c+1)); + set_pixel(r, columns-1, first_element_data); + } + break; + case MOVE_RIGHT: + for (r = 0; r < rows; r++) + { + first_element_data = get_pixel(r, columns-1); + for (c = columns-1; c > 0; c--) set_pixel(r, c, get_pixel(r, c-1)); + set_pixel(r, 0, first_element_data); + } + break; + case MOVE_UP: + for (c = 0; c < columns; c++) + { + first_element_data = get_pixel(0, c); + for (r = 0; r < rows-1; r++) set_pixel(r, c, get_pixel(r+1, c)); + set_pixel(rows-1, c, first_element_data); + } + break; + case MOVE_DOWN: + for (c = 0; c < columns; c++) + { + first_element_data = get_pixel(rows-1, c); + for (r = rows-1; r > 0; r--) set_pixel(r, c, get_pixel(r-1, c)); + set_pixel(0, c, first_element_data); + } + break; + case FLIP_HOR: + for (r = 0; r < rows; r++) + { + for (c = 0; c < columns/2; c++) { + first_element_data = get_pixel(r, c); + set_pixel(r, c, get_pixel(r, columns-c-1)); + set_pixel(r, columns-c-1, first_element_data); + } + } + break; + case FLIP_VER: + for (c = 0; c < columns; c++) + { + for (r = 0; r < rows/2; r++) { + first_element_data = get_pixel(r, c); + set_pixel(r, c, get_pixel(rows-r-1, c)); + set_pixel(rows-r-1, c, first_element_data); + } + } + break; } } diff --git a/programs/cmm/iconedit/iconedit.c b/programs/cmm/iconedit/iconedit.c index 198d9b84b9..dc0cda78e6 100644 --- a/programs/cmm/iconedit/iconedit.c +++ b/programs/cmm/iconedit/iconedit.c @@ -1,12 +1,11 @@ /* - * BACKGEN - Background generator + * Icon Editor for KolibriOS * Author: Leency * Licence: GPL v2 */ /* TODO/BUGS -Flip first pixel doesn't work well Open with param */ @@ -27,7 +26,7 @@ Open with param // // //===================================================// -#define T_TITLE "Icon Editor 0.09" +#define T_TITLE "Icon Editor 0.09b" #define TOOLBAR_H 24+8 #define PALLETE_SIZE 116 @@ -272,7 +271,7 @@ void DrawEditArea() canvas.w = image.columns * zoom.value; canvas.h = image.rows * zoom.value; if (canvas.w+2 > wrapper.w) || (canvas.h+2 > wrapper.h) { - zoom.value--; + zoom.click(BTN_ZOOM_OUT); DrawEditArea(); return; } @@ -361,7 +360,9 @@ void EventSave() { char save_buf[3126]; memmov(#save_buf, #bmp_32x32x16_header, sizeof(bmp_32x32x16_header)); + image.move(FLIP_VER); //fix an issue that BMP image is flipped vertically memmov(#save_buf+sizeof(bmp_32x32x16_header), image.get_image(), sizeof(save_buf)-sizeof(bmp_32x32x16_header)); + image.move(FLIP_VER); //restore if (WriteFile(sizeof(save_buf), #save_buf, "/rd/1/saved_image.bmp")==0) { notify("'File saved as /rd/1/saved_image.bmp' -O");