forked from KolibriOS/kolibrios
IconEdit 0.38: two bug fixes
git-svn-id: svn://kolibrios.org@7206 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
10393dcd17
commit
4c0b3e3e85
@ -28,7 +28,7 @@ pipet aside color view
|
|||||||
// //
|
// //
|
||||||
//===================================================//
|
//===================================================//
|
||||||
|
|
||||||
#define T_TITLE "Icon Editor 0.37"
|
#define T_TITLE "Icon Editor 0.38"
|
||||||
|
|
||||||
#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
|
||||||
@ -262,10 +262,20 @@ void SimpleFigureTool_Reset() {
|
|||||||
figTool_States[currentFigToolState].lastTempPosY = -1;
|
figTool_States[currentFigToolState].lastTempPosY = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int mouseX_last;
|
||||||
|
int mouseY_last;
|
||||||
|
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) {
|
||||||
if (canvas.hovered())
|
if (mouse.down) && (canvas.hovered()) first_click_in_canvas = true;
|
||||||
|
if (first_click_in_canvas)
|
||||||
{
|
{
|
||||||
if (lkm) {
|
if (mouseX>canvas.x+canvas.w-zoom.value) mouseX = canvas.x+canvas.w-zoom.value;
|
||||||
|
if (mouseY>canvas.y+canvas.h-zoom.value) mouseY = canvas.y+canvas.h-zoom.value;
|
||||||
|
if (mouseX<canvas.x) mouseX = canvas.x;
|
||||||
|
if (mouseY<canvas.y) mouseY = canvas.y;
|
||||||
|
|
||||||
|
if (mouse.lkm) {
|
||||||
if ((figTool_States[currentFigToolState].startX < 0) || (figTool_States[currentFigToolState].startY < 0)) {
|
if ((figTool_States[currentFigToolState].startX < 0) || (figTool_States[currentFigToolState].startY < 0)) {
|
||||||
figTool_States[currentFigToolState].startX = mouseX;
|
figTool_States[currentFigToolState].startX = mouseX;
|
||||||
figTool_States[currentFigToolState].startY = mouseY;
|
figTool_States[currentFigToolState].startY = mouseY;
|
||||||
@ -277,8 +287,10 @@ void SimpleFigureTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
|
|||||||
DrawCanvas();
|
DrawCanvas();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mouseX_last = mouseX;
|
||||||
|
mouseY_last = mouseY;
|
||||||
}
|
}
|
||||||
else {
|
if (mouse.up) {
|
||||||
if ((figTool_States[currentFigToolState].startX >= 0) && (figTool_States[currentFigToolState].startY >= 0)) {
|
if ((figTool_States[currentFigToolState].startX >= 0) && (figTool_States[currentFigToolState].startY >= 0)) {
|
||||||
// Draw line from start position to current position
|
// Draw line from start position to current position
|
||||||
if (currentTool == TOOL_LINE) {
|
if (currentTool == TOOL_LINE) {
|
||||||
@ -303,6 +315,8 @@ void SimpleFigureTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
|
|||||||
// Reset start position
|
// Reset start position
|
||||||
figTool_States[currentFigToolState].startX = -1;
|
figTool_States[currentFigToolState].startX = -1;
|
||||||
figTool_States[currentFigToolState].startY = -1;
|
figTool_States[currentFigToolState].startY = -1;
|
||||||
|
|
||||||
|
first_click_in_canvas = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -313,20 +327,22 @@ void SimpleFigureTool_onCanvasDraw() {
|
|||||||
if (currentTool == TOOL_LINE) {
|
if (currentTool == TOOL_LINE) {
|
||||||
DrawLine(figTool_States[currentFigToolState].startX - canvas.x/zoom.value,
|
DrawLine(figTool_States[currentFigToolState].startX - canvas.x/zoom.value,
|
||||||
figTool_States[currentFigToolState].startY - canvas.y/zoom.value,
|
figTool_States[currentFigToolState].startY - canvas.y/zoom.value,
|
||||||
mouse.x - canvas.x/zoom.value,
|
mouseX_last - canvas.x/zoom.value,
|
||||||
mouse.y - canvas.y/zoom.value,
|
mouseY_last - canvas.y/zoom.value,
|
||||||
active_color_1,
|
active_color_1,
|
||||||
2);
|
2);
|
||||||
}
|
}
|
||||||
else if (currentTool == TOOL_RECT) {
|
else if (currentTool == TOOL_RECT) {
|
||||||
DrawRectangleInCanvas(figTool_States[currentFigToolState].startX - canvas.x/zoom.value,
|
DrawRectangleInCanvas(figTool_States[currentFigToolState].startX - canvas.x/zoom.value,
|
||||||
figTool_States[currentFigToolState].startY - canvas.y/zoom.value,
|
figTool_States[currentFigToolState].startY - canvas.y/zoom.value,
|
||||||
mouse.x - canvas.x/zoom.value,
|
mouseX_last - canvas.x/zoom.value,
|
||||||
mouse.y - canvas.y/zoom.value, active_color_1, 2);
|
mouseY_last - canvas.y/zoom.value,
|
||||||
|
active_color_1,
|
||||||
|
2);
|
||||||
}
|
}
|
||||||
|
|
||||||
figTool_States[currentFigToolState].lastTempPosX = mouse.x - canvas.x/zoom.value;
|
figTool_States[currentFigToolState].lastTempPosX = mouseX_last - canvas.x/zoom.value;
|
||||||
figTool_States[currentFigToolState].lastTempPosY = mouse.y - canvas.y/zoom.value;
|
figTool_States[currentFigToolState].lastTempPosY = mouseY_last - canvas.y/zoom.value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -789,12 +805,6 @@ 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", y1);
|
|
||||||
|
|
||||||
// debugval("Draw line", x2);
|
|
||||||
// debugval("Draw line", y2);
|
|
||||||
// debugln("===");
|
|
||||||
dx = x2 - x1;
|
dx = x2 - x1;
|
||||||
|
|
||||||
if (dx < 0)
|
if (dx < 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user