|
|
|
@ -42,9 +42,7 @@ function undo(state, context, event, options) {
@@ -42,9 +42,7 @@ function undo(state, context, event, options) {
|
|
|
|
|
other_event.deleted = true; |
|
|
|
|
const image = get_image(context, other_event.image_id); |
|
|
|
|
if (image !== null) { |
|
|
|
|
image.move_head -= 2; |
|
|
|
|
image.at.x = image.move_history[image.move_head - 2]; |
|
|
|
|
image.at.y = image.move_history[image.move_head - 1]; |
|
|
|
|
pop_image_transform(image); |
|
|
|
|
need_draw = true; |
|
|
|
|
} else { |
|
|
|
|
console.warning('Undo image move for a non-existent image'); |
|
|
|
@ -56,15 +54,7 @@ function undo(state, context, event, options) {
@@ -56,15 +54,7 @@ function undo(state, context, event, options) {
|
|
|
|
|
other_event.deleted = true; |
|
|
|
|
const image = get_image(context, other_event.image_id); |
|
|
|
|
if (image !== null) { |
|
|
|
|
image.scale_head -= 4; |
|
|
|
|
|
|
|
|
|
// NEXT: merge move and scale. Otherwise we can't know
|
|
|
|
|
// that there have been move events inbetween scale
|
|
|
|
|
|
|
|
|
|
image.at.x = image.scale_history[image.scale_head - 4]; |
|
|
|
|
image.at.y = image.scale_history[image.scale_head - 3]; |
|
|
|
|
image.width = image.scale_history[image.scale_head - 2]; |
|
|
|
|
image.height = image.scale_history[image.scale_head - 1]; |
|
|
|
|
pop_image_transform(image); |
|
|
|
|
need_draw = true; |
|
|
|
|
} else { |
|
|
|
|
console.warning('Undo image scale for a non-existent image'); |
|
|
|
@ -101,3 +91,42 @@ function undo(state, context, event, options) {
@@ -101,3 +91,42 @@ function undo(state, context, event, options) {
|
|
|
|
|
function redo() { |
|
|
|
|
console.log('TODO'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function push_image_move(image, x, y) { |
|
|
|
|
if (image.transform_head < image.transform_history.length) { |
|
|
|
|
image.transform_history[image.transform_head] = image.at.x; |
|
|
|
|
image.transform_history[image.transform_head + 1] = image.at.y; |
|
|
|
|
image.transform_history[image.transform_head + 2] = image.width; |
|
|
|
|
image.transform_history[image.transform_head + 3] = image.height; |
|
|
|
|
} else { |
|
|
|
|
image.transform_history.push(image.at.x, image.at.y, image.width, image.height); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
image.at.x = x; |
|
|
|
|
image.at.y = y; |
|
|
|
|
|
|
|
|
|
image.transform_head += 4; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function push_image_scale(image, corner, x, y) { |
|
|
|
|
if (image.transform_head < image.transform_history.length) { |
|
|
|
|
image.transform_history[image.transform_head] = image.at.x; |
|
|
|
|
image.transform_history[image.transform_head + 1] = image.at.y; |
|
|
|
|
image.transform_history[image.transform_head + 2] = image.width; |
|
|
|
|
image.transform_history[image.transform_head + 3] = image.height; |
|
|
|
|
} else { |
|
|
|
|
image.transform_history.push(image.at.x, image.at.y, image.width, image.height); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
scale_image(image, corner, {'x': x, 'y': y}); |
|
|
|
|
|
|
|
|
|
image.transform_head += 4; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function pop_image_transform(image, corner, x, y) { |
|
|
|
|
image.transform_head -= 4; |
|
|
|
|
image.at.x = image.transform_history[image.transform_head - 4]; |
|
|
|
|
image.at.y = image.transform_history[image.transform_head - 3]; |
|
|
|
|
image.width = image.transform_history[image.transform_head - 2]; |
|
|
|
|
image.height = image.transform_history[image.transform_head - 1]; |
|
|
|
|
} |
|
|
|
|