mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-01-23 19:38:05 +01:00
- [Canvas] Add image file dropping to the surface.
This commit is contained in:
parent
217133980c
commit
529e9267d6
10 changed files with 191 additions and 71 deletions
|
@ -430,6 +430,47 @@
|
||||||
{"$GMIncludedFile":"","%Name":"4 Loop.pxc","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"4 Loop.pxc","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
{"$GMIncludedFile":"","%Name":"4 Loop.pxc","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"4 Loop.pxc","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
{"$GMIncludedFile":"","%Name":"5 Particles.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"5 Particles.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
{"$GMIncludedFile":"","%Name":"5 Particles.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"5 Particles.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
{"$GMIncludedFile":"","%Name":"5 Particles.pxc","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"5 Particles.pxc","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
{"$GMIncludedFile":"","%Name":"5 Particles.pxc","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"5 Particles.pxc","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"arrowRight.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"arrowRight.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"card_back.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"card_back.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"card_clubs_02.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"card_clubs_02.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"card_clubs_03.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"card_clubs_03.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"card_clubs_04.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"card_clubs_04.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"card_clubs_05.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"card_clubs_05.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"dice_1.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"dice_1.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"dice_2.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"dice_2.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"dice_3.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"dice_3.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"dice_4.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"dice_4.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"dice_5.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"dice_5.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"dice_6.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"dice_6.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"multi file dialog.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"multi file dialog.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"tile_0044.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"tile_0044.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"tile_0067.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"tile_0067.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"tile_0126.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Getting started","name":"tile_0126.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"Broken heart.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"Broken heart.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"Broken heart.pxc","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"Broken heart.pxc","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"card_back.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"card_back.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"card_clubs_02.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"card_clubs_02.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"card_clubs_03.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"card_clubs_03.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"card_clubs_04.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"card_clubs_04.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"card_clubs_05.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"card_clubs_05.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"Cards flipping.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"Cards flipping.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"Cards flipping.pxc","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"Cards flipping.pxc","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"dice_1.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"dice_1.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"dice_2.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"dice_2.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"dice_3.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"dice_3.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"dice_4.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"dice_4.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"dice_5.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"dice_5.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"dice_6.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"dice_6.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"Dice.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"Dice.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"Dice.pxc","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"Dice.pxc","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"Shiny gem.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"Shiny gem.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"Shiny gem.pxc","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"Shiny gem.pxc","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"spark.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"spark.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"tile_0044.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"tile_0044.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"tile_0067.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"tile_0067.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"tile_0126.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"tile_0126.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"Tree sway.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"Tree sway.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
{"$GMIncludedFile":"","%Name":"Tree sway.pxc","CopyToMask":-1,"filePath":"datafiles/Welcome files/Sample Projects","name":"Tree sway.pxc","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
{"$GMIncludedFile":"","%Name":"Canvas.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Templates","name":"Canvas.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
{"$GMIncludedFile":"","%Name":"Canvas.png","CopyToMask":-1,"filePath":"datafiles/Welcome files/Templates","name":"Canvas.png","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
{"$GMIncludedFile":"","%Name":"Canvas.pxc","CopyToMask":-1,"filePath":"datafiles/Welcome files/Templates","name":"Canvas.pxc","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
{"$GMIncludedFile":"","%Name":"Canvas.pxc","CopyToMask":-1,"filePath":"datafiles/Welcome files/Templates","name":"Canvas.pxc","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
{"$GMIncludedFile":"","%Name":"Welcome files.zip","CopyToMask":-1,"filePath":"datafiles/Welcome files","name":"Welcome files.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
{"$GMIncludedFile":"","%Name":"Welcome files.zip","CopyToMask":-1,"filePath":"datafiles/Welcome files","name":"Welcome files.zip","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
|
||||||
|
|
File diff suppressed because one or more lines are too long
1
datafiles/Welcome files/Templates/Canvas.pxc1
Normal file
1
datafiles/Welcome files/Templates/Canvas.pxc1
Normal file
File diff suppressed because one or more lines are too long
|
@ -21,7 +21,7 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
mouse_pre_x = 0;
|
mouse_pre_x = 0;
|
||||||
mouse_pre_y = 0;
|
mouse_pre_y = 0;
|
||||||
|
|
||||||
function createSelection(_mask, sel_x0, sel_y0, sel_w, sel_h) { #region
|
function createSelection(_mask, sel_x0, sel_y0, sel_w, sel_h) {
|
||||||
if(is_selected)
|
if(is_selected)
|
||||||
apply();
|
apply();
|
||||||
else {
|
else {
|
||||||
|
@ -37,9 +37,37 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
|
|
||||||
else
|
else
|
||||||
createNewSelection(_mask, sel_x0, sel_y0, sel_w, sel_h);
|
createNewSelection(_mask, sel_x0, sel_y0, sel_w, sel_h);
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function modifySelection(_mask, sel_x0, sel_y0, sel_w, sel_h, _add) { #region
|
function createSelectionFromSurface(surface, sel_x0 = 0, sel_y0 = 0) {
|
||||||
|
if(!surface_exists(surface)) return;
|
||||||
|
|
||||||
|
var sel_w = surface_get_width(surface);
|
||||||
|
var sel_h = surface_get_height(surface);
|
||||||
|
|
||||||
|
selection_surface = surface_verify(selection_surface, sel_w, sel_h);
|
||||||
|
selection_mask = surface_verify(selection_mask, sel_w, sel_h);
|
||||||
|
|
||||||
|
surface_set_target(selection_surface);
|
||||||
|
DRAW_CLEAR
|
||||||
|
BLEND_OVERRIDE
|
||||||
|
draw_surface(surface, 0, 0);
|
||||||
|
BLEND_NORMAL
|
||||||
|
surface_reset_target();
|
||||||
|
|
||||||
|
surface_set_target(selection_mask);
|
||||||
|
DRAW_CLEAR
|
||||||
|
BLEND_OVERRIDE
|
||||||
|
draw_surface(surface, 0, 0);
|
||||||
|
BLEND_NORMAL
|
||||||
|
surface_reset_target();
|
||||||
|
|
||||||
|
selection_position = [ sel_x0, sel_y0 ];
|
||||||
|
selection_size = [ sel_w, sel_h ];
|
||||||
|
is_selected = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function modifySelection(_mask, sel_x0, sel_y0, sel_w, sel_h, _add) {
|
||||||
if(sel_w == 1 && sel_h == 1) return;
|
if(sel_w == 1 && sel_h == 1) return;
|
||||||
|
|
||||||
var _x0, _y0, _x1, _y1;
|
var _x0, _y0, _x1, _y1;
|
||||||
|
@ -99,9 +127,9 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
|
|
||||||
createNewSelection(_selection_mask, _x0, _y0, _nw, _nh);
|
createNewSelection(_selection_mask, _x0, _y0, _nw, _nh);
|
||||||
surface_free(_selection_mask);
|
surface_free(_selection_mask);
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function createNewSelection(_mask, sel_x0, sel_y0, sel_w, sel_h) { #region
|
function createNewSelection(_mask, sel_x0, sel_y0, sel_w, sel_h) {
|
||||||
if(sel_w == 1 && sel_h == 1) return;
|
if(sel_w == 1 && sel_h == 1) return;
|
||||||
|
|
||||||
selection_surface = surface_verify(selection_surface, sel_w, sel_h);
|
selection_surface = surface_verify(selection_surface, sel_w, sel_h);
|
||||||
|
@ -133,15 +161,15 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
selection_position = [ sel_x0, sel_y0 ];
|
selection_position = [ sel_x0, sel_y0 ];
|
||||||
selection_size = [ sel_w, sel_h ];
|
selection_size = [ sel_w, sel_h ];
|
||||||
is_selected = true;
|
is_selected = true;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function copySelection() { #region
|
function copySelection() {
|
||||||
var s = surface_encode(selection_surface, false);
|
var s = surface_encode(selection_surface, false);
|
||||||
s.position = selection_position;
|
s.position = selection_position;
|
||||||
clipboard_set_text(json_stringify(s));
|
clipboard_set_text(json_stringify(s));
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function apply() { #region
|
function apply() {
|
||||||
var _drawLay = node.tool_attribute.drawLayer;
|
var _drawLay = node.tool_attribute.drawLayer;
|
||||||
var _sw = surface_get_width(_canvas_surface);
|
var _sw = surface_get_width(_canvas_surface);
|
||||||
var _sh = surface_get_height(_canvas_surface);
|
var _sh = surface_get_height(_canvas_surface);
|
||||||
|
@ -172,9 +200,9 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
node.surface_store_buffer();
|
node.surface_store_buffer();
|
||||||
|
|
||||||
is_selected = false;
|
is_selected = false;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function onSelected(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
|
function onSelected(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
||||||
if(!is_surface(selection_surface)) {
|
if(!is_surface(selection_surface)) {
|
||||||
is_selected = false;
|
is_selected = false;
|
||||||
return;
|
return;
|
||||||
|
@ -196,7 +224,8 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
var pos_y = selection_position[1];
|
var pos_y = selection_position[1];
|
||||||
var sel_w = surface_get_width_safe(selection_surface);
|
var sel_w = surface_get_width_safe(selection_surface);
|
||||||
var sel_h = surface_get_height_safe(selection_surface);
|
var sel_h = surface_get_height_safe(selection_surface);
|
||||||
|
var _app = true;
|
||||||
|
|
||||||
if(point_in_rectangle(mouse_cur_x, mouse_cur_y, pos_x, pos_y, pos_x + sel_w, pos_y + sel_h)) {
|
if(point_in_rectangle(mouse_cur_x, mouse_cur_y, pos_x, pos_y, pos_x + sel_w, pos_y + sel_h)) {
|
||||||
var _c = surface_getpixel_ext(selection_mask, mouse_cur_x - pos_x, mouse_cur_y - pos_y);
|
var _c = surface_getpixel_ext(selection_mask, mouse_cur_x - pos_x, mouse_cur_y - pos_y);
|
||||||
if(_c > 0) {
|
if(_c > 0) {
|
||||||
|
@ -205,32 +234,35 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
selection_sy = pos_y;
|
selection_sy = pos_y;
|
||||||
selection_mx = mouse_cur_x;
|
selection_mx = mouse_cur_x;
|
||||||
selection_my = mouse_cur_y;
|
selection_my = mouse_cur_y;
|
||||||
|
|
||||||
|
_app = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(_app && PANEL_PREVIEW.tool_current == noone)
|
||||||
|
apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(key_press(vk_delete)) {
|
if(key_press(vk_delete)) {
|
||||||
is_selected = false;
|
is_selected = false;
|
||||||
surface_free(selection_surface);
|
surface_free(selection_surface);
|
||||||
|
|
||||||
} else if(key_press(vk_escape)) {
|
} else if(key_press(vk_escape))
|
||||||
apply();
|
apply();
|
||||||
|
}
|
||||||
}
|
|
||||||
} #endregion
|
|
||||||
|
|
||||||
function step(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
|
function step(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
||||||
|
|
||||||
mouse_cur_x = round((_mx - _x) / _s - 0.5);
|
mouse_cur_x = round((_mx - _x) / _s - 0.5);
|
||||||
mouse_cur_y = round((_my - _y) / _s - 0.5);
|
mouse_cur_y = round((_my - _y) / _s - 0.5);
|
||||||
|
|
||||||
if(is_selected) { onSelected(hover, active, _x, _y, _s, _mx, _my, _snx, _sny); return; }
|
if(is_selected) { onSelected(hover, active, _x, _y, _s, _mx, _my, _snx, _sny); return; }
|
||||||
else if(is_surface(selection_surface)) { apply(); }
|
else if(is_surface(selection_surface)) { apply(); }
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function onDrawMask(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {}
|
function onDrawMask(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {}
|
||||||
|
|
||||||
function drawMask(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
|
function drawMask(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
||||||
var sel_x0, sel_y0;
|
var sel_x0, sel_y0;
|
||||||
|
|
||||||
if(is_selecting) {
|
if(is_selecting) {
|
||||||
|
@ -247,9 +279,9 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
draw_surface_ext_safe(selection_mask, _dx, _dy, _s, _s);
|
draw_surface_ext_safe(selection_mask, _dx, _dy, _s, _s);
|
||||||
|
|
||||||
onDrawMask(hover, active, _x, _y, _s, _mx, _my, _snx, _sny);
|
onDrawMask(hover, active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
|
function drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
||||||
if(!is_selected) {
|
if(!is_selected) {
|
||||||
if(!is_selecting) {
|
if(!is_selecting) {
|
||||||
var x0 = _x + mouse_cur_x * _s;
|
var x0 = _x + mouse_cur_x * _s;
|
||||||
|
@ -273,11 +305,11 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
|
|
||||||
draw_set_color(c_white);
|
draw_set_color(c_white);
|
||||||
draw_rectangle_dashed(pos_x, pos_y, pos_x + sel_w, pos_y + sel_h, true, 6, current_time / 100);
|
draw_rectangle_dashed(pos_x, pos_y, pos_x + sel_w, pos_y + sel_h, true, 6, current_time / 100);
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
function rotate90cw() { #region
|
function rotate90cw() {
|
||||||
var _sw = surface_get_width(selection_surface);
|
var _sw = surface_get_width(selection_surface);
|
||||||
var _sh = surface_get_height(selection_surface);
|
var _sh = surface_get_height(selection_surface);
|
||||||
|
|
||||||
|
@ -288,9 +320,9 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
|
|
||||||
surface_free(selection_surface);
|
surface_free(selection_surface);
|
||||||
selection_surface = _newS;
|
selection_surface = _newS;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function rotate90ccw() { #region
|
function rotate90ccw() {
|
||||||
var _sw = surface_get_width(selection_surface);
|
var _sw = surface_get_width(selection_surface);
|
||||||
var _sh = surface_get_height(selection_surface);
|
var _sh = surface_get_height(selection_surface);
|
||||||
|
|
||||||
|
@ -301,9 +333,9 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
|
|
||||||
surface_free(selection_surface);
|
surface_free(selection_surface);
|
||||||
selection_surface = _newS;
|
selection_surface = _newS;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function flipH() { #region
|
function flipH() {
|
||||||
var _sw = surface_get_width(selection_surface);
|
var _sw = surface_get_width(selection_surface);
|
||||||
var _sh = surface_get_height(selection_surface);
|
var _sh = surface_get_height(selection_surface);
|
||||||
|
|
||||||
|
@ -314,9 +346,9 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
|
|
||||||
surface_free(selection_surface);
|
surface_free(selection_surface);
|
||||||
selection_surface = _newS;
|
selection_surface = _newS;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function flipV() { #region
|
function flipV() {
|
||||||
var _sw = surface_get_width(selection_surface);
|
var _sw = surface_get_width(selection_surface);
|
||||||
var _sh = surface_get_height(selection_surface);
|
var _sh = surface_get_height(selection_surface);
|
||||||
|
|
||||||
|
@ -327,5 +359,5 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
||||||
|
|
||||||
surface_free(selection_surface);
|
surface_free(selection_surface);
|
||||||
selection_surface = _newS;
|
selection_surface = _newS;
|
||||||
} #endregion
|
}
|
||||||
}
|
}
|
|
@ -38,7 +38,7 @@
|
||||||
LATEST_VERSION = 11700;
|
LATEST_VERSION = 11700;
|
||||||
VERSION = 11760;
|
VERSION = 11760;
|
||||||
SAVE_VERSION = 11700;
|
SAVE_VERSION = 11700;
|
||||||
VERSION_STRING = "1.17.6.003";
|
VERSION_STRING = "1.17.6.004";
|
||||||
BUILD_NUMBER = 11760;
|
BUILD_NUMBER = 11760;
|
||||||
|
|
||||||
globalvar HOTKEYS, HOTKEY_CONTEXT;
|
globalvar HOTKEYS, HOTKEY_CONTEXT;
|
||||||
|
|
|
@ -715,19 +715,20 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
_tool.subtool = _currTool.selecting;
|
_tool.subtool = _currTool.selecting;
|
||||||
array_append(rightTools, _tool.rightTools);
|
array_append(rightTools, _tool.rightTools);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(tool_selection.is_selected) {
|
||||||
tool_selection.node = self;
|
tool_selection.node = self;
|
||||||
tool_selection.drawing_surface = drawing_surface;
|
tool_selection.drawing_surface = drawing_surface;
|
||||||
tool_selection._canvas_surface = _canvas_surface;
|
tool_selection._canvas_surface = _canvas_surface;
|
||||||
tool_selection.apply_draw_surface = apply_draw_surface;
|
tool_selection.apply_draw_surface = apply_draw_surface;
|
||||||
|
tool_selection.step(hover, active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||||
if(is_instanceof(_tool, canvas_tool_selection) && tool_selection.is_selected) tool_selection.step(hover, active, _x, _y, _s, _mx, _my, _snx, _sny);
|
|
||||||
|
|
||||||
tool_mirror_edit.sprs = (!tool_selection.is_selected && tool_attribute.mirror[0])? THEME.canvas_mirror_diag : THEME.canvas_mirror;
|
tool_mirror_edit.sprs = (!tool_selection.is_selected && tool_attribute.mirror[0])? THEME.canvas_mirror_diag : THEME.canvas_mirror;
|
||||||
}
|
|
||||||
|
array_append(rightTools, rightTools_selection);
|
||||||
if(tool_selection.is_selected) array_append(rightTools, rightTools_selection);
|
|
||||||
else array_append(rightTools, rightTools_not_selection);
|
} else
|
||||||
|
array_append(rightTools, rightTools_not_selection);
|
||||||
|
|
||||||
if(_tool && _tool.override) {
|
if(_tool && _tool.override) {
|
||||||
_tool.node = self;
|
_tool.node = self;
|
||||||
|
@ -906,11 +907,8 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
var _surf = surface_decode(_str);
|
var _surf = surface_decode(_str);
|
||||||
|
|
||||||
if(surface_exists(_surf)) {
|
if(surface_exists(_surf)) {
|
||||||
tool_selection.selection_surface = _surf;
|
tool_selection.createSelectionFromSurface(_surf);
|
||||||
tool_selection.is_selected = true;
|
surface_free(_surf);
|
||||||
|
|
||||||
tool_selection.selection_position = [ 0, 0 ];
|
|
||||||
tool_selection.selection_size = [ surface_get_width(_surf), surface_get_height(_surf) ];
|
|
||||||
|
|
||||||
if(key_mod_press(SHIFT)) {
|
if(key_mod_press(SHIFT)) {
|
||||||
var _sel_pos = struct_try_get(_str, "position", [ 0, 0 ]);
|
var _sel_pos = struct_try_get(_str, "position", [ 0, 0 ]);
|
||||||
|
@ -1121,6 +1119,29 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
|
static dropPath = function(path) {
|
||||||
|
if(!file_exists_empty(path)) return noone;
|
||||||
|
|
||||||
|
if(tool_selection.is_selected)
|
||||||
|
tool_selection.apply();
|
||||||
|
|
||||||
|
var _spr = sprite_add(path, 0, 0, 0, 0, 0);
|
||||||
|
if(_spr == -1) return noone;
|
||||||
|
|
||||||
|
var _sw = sprite_get_width(_spr);
|
||||||
|
var _sh = sprite_get_height(_spr);
|
||||||
|
|
||||||
|
var surf = surface_create(_sw, _sh);
|
||||||
|
surface_set_shader(surf, noone);
|
||||||
|
draw_sprite(_spr, 0, 0, 0);
|
||||||
|
surface_reset_shader();
|
||||||
|
|
||||||
|
sprite_delete(_spr);
|
||||||
|
|
||||||
|
tool_selection.createSelectionFromSurface(surf);
|
||||||
|
surface_free(surf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -297,12 +297,16 @@ function Node_Canvas_Group(_x, _y, _group) : Node_Collection(_x, _y, _group) con
|
||||||
canvases[i].inputs[| 0].setValue(_dim);
|
canvases[i].inputs[| 0].setValue(_dim);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static dropPath = function(path) {
|
||||||
|
if(canvas_sel) canvas_sel.dropPath(path);
|
||||||
|
}
|
||||||
|
|
||||||
static getPreviewValues = function() { return composite == noone? noone : composite.getPreviewValues(); }
|
static getPreviewValues = function() { return composite == noone? noone : composite.getPreviewValues(); }
|
||||||
|
|
||||||
static postDeserialize = function() {
|
static postDeserialize = function() {
|
||||||
refreshNodes();
|
refreshNodes();
|
||||||
}
|
}
|
||||||
|
|
||||||
sortIO();
|
sortIO();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2321,6 +2321,8 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
|
||||||
}
|
}
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
|
static dropPath = noone;
|
||||||
|
|
||||||
static clone = function(target = PANEL_GRAPH.getCurrentContext()) { #region
|
static clone = function(target = PANEL_GRAPH.getCurrentContext()) { #region
|
||||||
CLONING = true;
|
CLONING = true;
|
||||||
var _type = instanceof(self);
|
var _type = instanceof(self);
|
||||||
|
|
|
@ -2049,18 +2049,6 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
else if(UPDATE == RENDER_TYPE.partial)
|
else if(UPDATE == RENDER_TYPE.partial)
|
||||||
draw_text(w - ui(8), ui(28), __txtx("panel_graph_rendering_partial", "Rendering partial") + "...");
|
draw_text(w - ui(8), ui(28), __txtx("panel_graph_rendering_partial", "Rendering partial") + "...");
|
||||||
|
|
||||||
if(DRAGGING && pHOVER) { #region file dropping
|
|
||||||
if(node_hovering && node_hovering.droppable(DRAGGING)) {
|
|
||||||
node_hovering.draw_droppable = true;
|
|
||||||
if(mouse_release(mb_left))
|
|
||||||
node_hovering.onDrop(DRAGGING);
|
|
||||||
} else {
|
|
||||||
draw_sprite_stretched_ext(THEME.ui_panel_active, 0, 2, 2, w - 4, h - 4, COLORS._main_value_positive, 1);
|
|
||||||
if(mouse_release(mb_left))
|
|
||||||
checkDropItem();
|
|
||||||
}
|
|
||||||
} #endregion
|
|
||||||
|
|
||||||
graph_dragging_key = false;
|
graph_dragging_key = false;
|
||||||
graph_zooming_key = false;
|
graph_zooming_key = false;
|
||||||
|
|
||||||
|
@ -2071,20 +2059,36 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
|
|
||||||
////////////////////////////////// File drop //////////////////////////////////
|
////////////////////////////////// File drop //////////////////////////////////
|
||||||
|
|
||||||
if(!array_empty(FILE_DROPPING)) {
|
|
||||||
load_file_path(FILE_DROPPING);
|
|
||||||
FILE_DROPPING = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
if(pHOVER) {
|
if(pHOVER) {
|
||||||
var _gx = mx / graph_s - graph_x;
|
if(DRAGGING) { // file dropping
|
||||||
var _gy = my / graph_s - graph_y;
|
|
||||||
|
|
||||||
if(FILE_IS_DROPPING)
|
|
||||||
draw_sprite_stretched_ext(THEME.ui_panel_selection, 0, 8, 8, w - 16, h - 16, COLORS._main_value_positive, 1);
|
draw_sprite_stretched_ext(THEME.ui_panel_selection, 0, 8, 8, w - 16, h - 16, COLORS._main_value_positive, 1);
|
||||||
|
|
||||||
|
if(node_hovering && node_hovering.droppable(DRAGGING)) {
|
||||||
|
node_hovering.draw_droppable = true;
|
||||||
|
if(mouse_release(mb_left))
|
||||||
|
node_hovering.onDrop(DRAGGING);
|
||||||
|
} else {
|
||||||
|
if(mouse_release(mb_left))
|
||||||
|
checkDropItem();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var _mx = (FILE_IS_DROPPING? FILE_DROPPING_X : mouse_mx) - x;
|
||||||
|
var _my = (FILE_IS_DROPPING? FILE_DROPPING_Y : mouse_my) - y;
|
||||||
|
|
||||||
|
var _gx = _mx / graph_s - graph_x;
|
||||||
|
var _gy = _my / graph_s - graph_y;
|
||||||
|
|
||||||
|
if(FILE_IS_DROPPING) {
|
||||||
|
// draw_sprite_stretched_ext(THEME.node_bg, 1, _mx, _my, 128 * graph_s, 128 * graph_s, COLORS._main_value_positive, 1);
|
||||||
|
draw_sprite_stretched_ext(THEME.ui_panel_selection, 0, 8, 8, w - 16, h - 16, COLORS._main_value_positive, 1);
|
||||||
|
}
|
||||||
|
|
||||||
if(FILE_DROPPED && !array_empty(FILE_DROPPING))
|
if(FILE_DROPPED && !array_empty(FILE_DROPPING)) {
|
||||||
|
_gx = mx / graph_s - graph_x;
|
||||||
|
_gy = my / graph_s - graph_y;
|
||||||
load_file_path(FILE_DROPPING, _gx, _gy);
|
load_file_path(FILE_DROPPING, _gx, _gy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
|
@ -2064,11 +2064,26 @@ function Panel_Preview() : PanelContent() constructor {
|
||||||
],, getNodePreview());
|
],, getNodePreview());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////// File drop //////////////////////////////////
|
||||||
|
|
||||||
if(pHOVER) {
|
if(pHOVER) {
|
||||||
if(FILE_IS_DROPPING)
|
var _node = getNodePreview();
|
||||||
draw_sprite_stretched_ext(THEME.ui_panel_selection, 0, 8, 8, w - 16, h - 16, COLORS._main_value_positive, 1);
|
|
||||||
|
if(_node && _node.dropPath != noone) {
|
||||||
|
|
||||||
if(FILE_DROPPED && !array_empty(FILE_DROPPING)) {}
|
if(DRAGGING && DRAGGING.type == "Asset") {
|
||||||
|
draw_sprite_stretched_ext(THEME.ui_panel_selection, 0, 8, 8, w - 16, h - 16, COLORS._main_value_positive, 1);
|
||||||
|
|
||||||
|
if(mouse_release(mb_left))
|
||||||
|
_node.dropPath(DRAGGING.data.path);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(FILE_IS_DROPPING)
|
||||||
|
draw_sprite_stretched_ext(THEME.ui_panel_selection, 0, 8, 8, w - 16, h - 16, COLORS._main_value_positive, 1);
|
||||||
|
|
||||||
|
if(FILE_DROPPED && !array_empty(FILE_DROPPING))
|
||||||
|
_node.dropPath(FILE_DROPPING[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
Loading…
Reference in a new issue