kopia lustrzana https://github.com/backface/turtlestitch
Added scaling and flipping
rodzic
6a4b4afbe9
commit
6d9ce7b61c
44
paint.js
44
paint.js
|
@ -3,12 +3,12 @@
|
|||
|
||||
a paint editor for Snap!
|
||||
inspired by the Scratch paint editor.
|
||||
|
||||
|
||||
written by Kartik Chandra
|
||||
Copyright (C) 2014 by Kartik Chandra
|
||||
|
||||
|
||||
This file is part of Snap!.
|
||||
|
||||
|
||||
Snap! is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of
|
||||
|
@ -133,6 +133,10 @@ PaintEditorMorph.prototype.buildContents = function () {
|
|||
this.buildToolbox();
|
||||
this.controls.add(this.toolbox);
|
||||
|
||||
this.scaleBox = new AlignmentMorph('row', this.padding);
|
||||
this.buildScaleBox();
|
||||
this.controls.add(this.scaleBox);
|
||||
|
||||
this.propertiesControls = {
|
||||
colorpicker: null,
|
||||
penSizeSlider: null,
|
||||
|
@ -218,6 +222,27 @@ PaintEditorMorph.prototype.buildEdits = function () {
|
|||
this.edits.fixLayout();
|
||||
};
|
||||
|
||||
PaintEditorMorph.prototype.buildScaleBox = function () {
|
||||
var paper = this.paper;
|
||||
this.scaleBox.add(this.pushButton(
|
||||
"grow",
|
||||
function () {paper.scale(0.05, 0.05); }
|
||||
));
|
||||
this.scaleBox.add(this.pushButton(
|
||||
"shrink",
|
||||
function () {paper.scale(-0.05, -0.05); }
|
||||
));
|
||||
this.scaleBox.add(this.pushButton(
|
||||
"flipX",
|
||||
function () {paper.scale(-2, 0); }
|
||||
));
|
||||
this.scaleBox.add(this.pushButton(
|
||||
"flipY",
|
||||
function () {paper.scale(0, -2); }
|
||||
));
|
||||
this.scaleBox.fixLayout();
|
||||
};
|
||||
|
||||
PaintEditorMorph.prototype.openIn = function (world, oldim, oldrc, callback) {
|
||||
// Open the editor in a world with an optional image to edit
|
||||
this.oldim = oldim;
|
||||
|
@ -558,6 +583,19 @@ PaintCanvasMorph.prototype.init = function (shift) {
|
|||
this.buildContents();
|
||||
};
|
||||
|
||||
PaintCanvasMorph.prototype.scale = function(x, y) {
|
||||
this.mask = newCanvas(this.extent());
|
||||
var c = newCanvas(this.extent());
|
||||
c.getContext("2d").save();
|
||||
c.getContext("2d").translate(this.rotationCenter.x, this.rotationCenter.y);
|
||||
c.getContext("2d").scale(1 + x, 1 + y);
|
||||
c.getContext("2d").drawImage(this.paper, -this.rotationCenter.x, -this.rotationCenter.y);
|
||||
c.getContext("2d").restore();
|
||||
this.paper = c;
|
||||
this.drawNew();
|
||||
this.changed();
|
||||
};
|
||||
|
||||
PaintCanvasMorph.prototype.cacheUndo = function () {
|
||||
var cachecan = newCanvas(this.extent());
|
||||
this.merge(this.paper, cachecan);
|
||||
|
|
Ładowanie…
Reference in New Issue