[Checkins] SVN: z3c.reference/trunk/ fixed displaying of viewport
after loading
Gerold Böhler
gerold at reloc.org
Sat Sep 22 14:34:35 EDT 2007
Log message for revision 79835:
fixed displaying of viewport after loading
Changed:
U z3c.reference/trunk/flash/fla/imagetool.as
U z3c.reference/trunk/flash/src/z3c/reference/imagetool/baseskin/Controller.as
U z3c.reference/trunk/flash/src/z3c/reference/imagetool/baseskin/ImageTool.as
U z3c.reference/trunk/src/z3c/reference/browser/resources/imagetool.swf
-=-
Modified: z3c.reference/trunk/flash/fla/imagetool.as
===================================================================
--- z3c.reference/trunk/flash/fla/imagetool.as 2007-09-22 18:10:37 UTC (rev 79834)
+++ z3c.reference/trunk/flash/fla/imagetool.as 2007-09-22 18:34:35 UTC (rev 79835)
@@ -26,15 +26,15 @@
// Debug Block Start
if (System.capabilities.playerType == "External")
{
- if (!_level0.url) _level0.url="toothbrush.jpg";
+ if (!_level0.url) _level0.url="testimage1.jpg";
//default values
- if (_level0.crop_x == undefined) _level0.crop_x = 1190;
- if (_level0.crop_y == undefined) _level0.crop_y = 830;
- if (_level0.crop_w == undefined) _level0.crop_w = 400;
- if (_level0.crop_h == undefined) _level0.crop_h = 300;
+ if (_level0.crop_x == undefined) _level0.crop_x = 100;
+ if (_level0.crop_y == undefined) _level0.crop_y = 100;
+ if (_level0.crop_w == undefined) _level0.crop_w = 200;
+ if (_level0.crop_h == undefined) _level0.crop_h = 100;
if (_level0.rotation == undefined) _level0.rotation = 0;
- if (_level0.presets == undefined) _level0.presets = '[{"name": "Freehand"}, {"name": "Ratio", "ratio": "4:3"}, {"name": "Output", "output_w": 123, "output_h": 321}, {"name": "Min", "min_w": 222, "min_h": 111}, {"name": "Max", "max_w": 555, "max_h": 444}, {"name": "MinMax", "output_w": 987, "output_h": 654, "max_w": 543, "max_h": 432, "min_w": 432, "min_h": 321}]';
+ if (_level0.presets == undefined) _level0.presets = '[{"name": "Freehand"}, {"name": "Ratio", "ratio": "4:3"}]';//, {"name": "Output", "output_w": 123, "output_h": 321}, {"name": "Min", "min_w": 222, "min_h": 111}, {"name": "Max", "max_w": 555, "max_h": 444}, {"name": "MinMax", "output_w": 987, "output_h": 654, "max_w": 543, "max_h": 432, "min_w": 432, "min_h": 321}]';
}
// Debug Block End
Modified: z3c.reference/trunk/flash/src/z3c/reference/imagetool/baseskin/Controller.as
===================================================================
--- z3c.reference/trunk/flash/src/z3c/reference/imagetool/baseskin/Controller.as 2007-09-22 18:10:37 UTC (rev 79834)
+++ z3c.reference/trunk/flash/src/z3c/reference/imagetool/baseskin/Controller.as 2007-09-22 18:34:35 UTC (rev 79835)
@@ -45,10 +45,10 @@
buttons_mc.setMask(canvas_mc.getMask());
rotateLeft_mc = buttons_mc.attachMovie("rotateLeft_mc", "rotateLeft_mc", buttons_mc.getNextHighestDepth());
- rotateLeft_mc.onRelease = function() { _parent._parent.broadcastEvent(new EventInfo(_parent._parent, "onRotateLeftRelease")); }
+ rotateLeft_mc.onRelease = rotateLeft_mc.onReleaseOutside = function() { _parent._parent.broadcastEvent(new EventInfo(_parent._parent, "onRotateLeftRelease")); }
rotateRight_mc = buttons_mc.attachMovie("rotateRight_mc", "rotateRight_mc", buttons_mc.getNextHighestDepth());
- rotateRight_mc.onRelease = function() { _parent._parent.broadcastEvent(new EventInfo(_parent._parent, "onRotateRightRelease")); }
+ rotateRight_mc.onRelease = rotateRight_mc.onReleaseOutside = function() { _parent._parent.broadcastEvent(new EventInfo(_parent._parent, "onRotateRightRelease")); }
slider_mc = buttons_mc.attachMovie("slider_mc", "slider_mc", buttons_mc.getNextHighestDepth(), {width: 100});
slider_mc.addListener(this);
@@ -85,28 +85,21 @@
dropdown_mc.rowCount = 10;
dropdown_mc.addEventListener("change", this);
- var itemList = new Array();
- for (var i in presets)
+ var selectedItem = presets[0];
+ for (var i = 0; i < presets.length; i++)
{
- itemList.push(presets[i]);
- }
-
- // revert and select current item
- var selectedItem = itemList[itemList.length - 1];
- for (var i = itemList.length - 1; i >= 0; i--)
- {
- var item = itemList[i];
- item.isRatioFixed = !!(item.ratio || (item.output_w && item.output_h) || (item.output_w && item.output_h) || (item.min_w && item.min_h) || (item.max_w && item.max_h));
+ var item = presets[i];
dropdown_mc.addItem({label: item.name, data: item});
- if (item.selected)
- {
- dropdown_mc.selectedIndex = itemList.length - 1 - i;
- selectedItem = item;
- }
+ if (item.selected)
+ {
+ dropdown_mc.selectedIndex = i;
+ selectedItem = item;
+ }
}
+
+ dropdown_mc._visible = presets.length > 1;
- dropdown_mc._visible = itemList.length > 1;
-
+ log("SELECTED: " + selectedItem.name)
fireRatioChange(selectedItem);
}
Modified: z3c.reference/trunk/flash/src/z3c/reference/imagetool/baseskin/ImageTool.as
===================================================================
--- z3c.reference/trunk/flash/src/z3c/reference/imagetool/baseskin/ImageTool.as 2007-09-22 18:10:37 UTC (rev 79834)
+++ z3c.reference/trunk/flash/src/z3c/reference/imagetool/baseskin/ImageTool.as 2007-09-22 18:34:35 UTC (rev 79835)
@@ -161,27 +161,110 @@
// first get the original size of the image and swap w/h if the image is rotated
//var originalRatio = imageAttitude.originalRatio;
var finalScale = imageAttitude.originalWidth / imageAttitude.w;
-
+
// first transform the presets
// use the supplied crop_w and crop_h parameters to determine the current preset
var inputRatio = FlashvarManager.get("crop_w") / FlashvarManager.get("crop_h");
var presets = FlashvarManager.get("presets");
+ var presetList = new Array();
+ var presetWasSelected = false;
+
for (var i in presets)
{
var preset = presets[i];
var ratio = preset.ratio.split(":");
preset.ratio = parseInt(ratio[0]) / parseInt(ratio[1]);
- // this is dangerous - should change that
- preset.selected = Math.abs(preset.output_w / preset.output_h - inputRatio) < 0.01 || Math.abs(preset.ratio - inputRatio) < 0.01;
+ if (!presetWasSelected)
+ {
+ // this is dangerous - should change that
+ preset.selected = Math.abs(preset.output_w / preset.output_h - inputRatio) < 0.01 || Math.abs(preset.ratio - inputRatio) < 0.01;
+ if (preset.selected)
+ presetWasSelected = true;
+ }
+ preset.isRatioFixed = !!(preset.ratio || (preset.output_w && preset.output_h) || (preset.output_w && preset.output_h) || (preset.min_w && preset.min_h) || (preset.max_w && preset.max_h));
+
preset.min_w /= finalScale;
preset.min_h /= finalScale;
preset.max_w /= finalScale
preset.max_h /= finalScale;
+
+ presetList.unshift(preset);
}
+
+ if (presetList.length)
+ FlashvarManager.set("presets", presetList);
+/*
+ // check if the preset ratio exists, if no set the default values
+ if (FlashvarManager.get("crop_w") && FlashvarManager.get("crop_h"))
+ {
+ var presetExists = false;
+ var ratio = FlashvarManager.get("crop_w") / FlashvarManager.get("crop_h");
+ for (var i = 0; i < presetList.length; i++)
+ {
+ var preset = presetList[i];
+ if (preset.ratio == ratio)
+ {
+ presetExists = true;
+ break;
+ }
+ }
+
+ if (!presetExists)
+ {
+ FlashvarManager.set("crop_x", -1);
+ FlashvarManager.set("crop_y", -1);
+ FlashvarManager.set("crop_w", 0);
+ FlashvarManager.set("crop_h", 0);
+ }
+ }
+*/
+ // this is the case when we load the image for the very first time, no ratio given
+ if (FlashvarManager.get("crop_x") < 0 && FlashvarManager.get("crop_y") < 0 && FlashvarManager.get("crop_w") == 0 && FlashvarManager.get("crop_h") == 0)
+ {
+ var firstPreset = FlashvarManager.get("presets")[0];
+
+ // if the preset has no ratio, just set the sizes
+ if (!firstPreset.ratio)
+ {
+ FlashvarManager.set("crop_w", imageAttitude.originalWidth * 0.8);
+ FlashvarManager.set("crop_h", imageAttitude.originalHeight * 0.8);
+ }
+ else
+ {
+ fitViewportIntoImage();
+ }
+ var viewportX = (imageAttitude.originalWidth - FlashvarManager.get("crop_w")) / 2;
+ var viewportY = (imageAttitude.originalHeight - FlashvarManager.get("crop_h")) / 2;
+ FlashvarManager.set("crop_x", viewportX);
+ FlashvarManager.set("crop_y", viewportY);
+
+ }
+ // this is the case when we load the image for the very first time, with ratio given
+ else if (FlashvarManager.get("crop_x") < 0 && FlashvarManager.get("crop_y") < 0 && FlashvarManager.get("crop_w") > 0 && FlashvarManager.get("crop_h") > 0)
+ {
+ fitViewportIntoImage();
+
+ var viewportX = (imageAttitude.originalWidth - FlashvarManager.get("crop_w")) / 2;
+ var viewportY = (imageAttitude.originalHeight - FlashvarManager.get("crop_h")) / 2;
+ FlashvarManager.set("crop_x", viewportX);
+ FlashvarManager.set("crop_y", viewportY);
+ }
+ // TODO - sanity check
+ /*
+ if (FlashvarManager.get("crop_x") < 0)
+ FlashvarManager.set("crop_x", 0);
+ if (FlashvarManager.get("crop_y") < 0)
+ FlashvarManager.set("crop_y", 0);
+ if (FlashvarManager.get("crop_x") + FlashvarManager.get("crop_w") > imageAttitude.originalWidth)
+ FlashvarManager.set("crop_w", imageAttitude.originalWidth - FlashvarManager.get("crop_x"));
+ if (FlashvarManager.get("crop_y") + FlashvarManager.get("crop_h") > imageAttitude.originalHeight)
+ FlashvarManager.set("crop_h", imageAttitude.originalHeight - FlashvarManager.get("crop_y"));
+ */
+
FlashvarManager.set("crop_x", FlashvarManager.get("crop_x") / finalScale);
FlashvarManager.set("crop_y", FlashvarManager.get("crop_y") / finalScale);
FlashvarManager.set("crop_w", FlashvarManager.get("crop_w") / finalScale);
@@ -192,6 +275,7 @@
var viewportW = FlashvarManager.get("crop_w");
var viewportH = FlashvarManager.get("crop_h");
+
centerImage();
viewport_mc._x = imageAttitude.x + viewportX;
@@ -326,8 +410,27 @@
editable_image_mc.setSize(canvas_mc._height, canvas_mc._height * originalRatio);
}
}
+
+ private function fitViewportIntoImage()
+ {
+ var ratio = FlashvarManager.get("crop_w") / FlashvarManager.get("crop_h");
+ var viewportW = imageAttitude.originalWidth * 0.8;
+ var viewportH = imageAttitude.originalHeight * 0.8;
+ var minLen = (viewportW > viewportH) ? viewportH : viewportW;
+ if (viewportW <= viewportH)
+ {
+ FlashvarManager.set("crop_w", minLen);
+ FlashvarManager.set("crop_h", minLen / ratio);
+ }
+ else
+ {
+ FlashvarManager.set("crop_w", minLen * ratio);
+ FlashvarManager.set("crop_h", minLen);
+ }
+ }
+
// viewport handling -----------------------------------------------------------------
function onEnterFrameUpdateViewport()
@@ -608,7 +711,12 @@
{
if (!changesLoaded)
return;
-
+
+ viewport_mc.setSize(FlashvarManager.get("crop_w"), FlashvarManager.get("crop_h"));
+ viewport_mc._x = imageAttitude.x + (imageAttitude.w - FlashvarManager.get("crop_w")) / 2;
+ viewport_mc._y = imageAttitude.y + (imageAttitude.h - FlashvarManager.get("crop_h")) / 2;
+
+ /*
var minWidth = imageAttitude.w > imageAttitude.h ? imageAttitude.h : imageAttitude.w;
var minHeight = imageAttitude.w > imageAttitude.h ? imageAttitude.w : imageAttitude.h;
var minLen = Math.min(minWidth, minHeight);
@@ -619,6 +727,7 @@
viewport_mc._x = imageAttitude.x + imageAttitude.w/2 - viewportWidth/2;
viewport_mc._y = imageAttitude.y + imageAttitude.h/2 - viewportHeight/2;
viewport_mc.setSize(viewportWidth, viewportHeight);
+ */
}
// menu event listeners --------------------------------------------------------------
@@ -640,15 +749,23 @@
}
var viewportImageRatio;
- var imageStartPoint;
var imageStartSize;
+ var viewportDirection;
+ var canvasCenter;
+ var viewportStartCenter;
+ var viewportStartDelta;
+
function onSliderPress(ei:EventInfo)
{
- viewportImageRatio = viewport_mc._width / imageAttitude.w;
- imageStartPoint = new Point(imageAttitude.x, imageAttitude.y);
+ centerImage();
+ viewportImageRatio = new Point(viewport_mc._width / imageAttitude.w, viewport_mc._height / imageAttitude.h);
+ viewportStartCenter = new Point(viewport_mc._x + viewport_mc._width / 2, viewport_mc._y + viewport_mc._height / 2);
+ canvasCenter = new Point(canvas_mc._x + canvas_mc._width / 2, canvas_mc._y + canvas_mc._height / 2);
+ //viewportDirection = new Point((viewportStartCenter.x - canvasCenter.x) >= 0 ? 1 : -1, (viewportStartCenter.y - canvasCenter.y) >= 0 ? 1 : -1);
imageStartSize = new Point(imageAttitude.w, imageAttitude.h);
- viewportStartPoint = new Point(viewport_mc._x, viewport_mc._y);
viewportStartSize = new Point(viewport_mc._width, viewport_mc._height);
+ viewportStartDelta = new Point(viewport_mc._x - imageAttitude.x, viewport_mc._y - imageAttitude.y);
+ //log(viewportStartSize.x + " " + viewportStartSize.y)
}
function onSliderChange(ei:EventInfo)
@@ -665,18 +782,12 @@
centerImage();
/*
- var viewportW = viewportStartSize.x + (imageAttitude.w - imageStartSize.x) * viewportImageRatio;
- var viewportH = viewportStartSize.y + (imageAttitude.h - imageStartSize.y) * viewportImageRatio;
+ var viewportW = viewportStartSize.x + (imageAttitude.w - imageStartSize.x) * viewportImageRatio.x;
+ var viewportH = viewportStartSize.y + (imageAttitude.h - imageStartSize.y) * viewportImageRatio.y;
viewport_mc.setSize(viewportW, viewportH);
- var canvasCenterX = canvas_mc._x + canvas_mc._width / 2;
- var canvasCenterY = canvas_mc._y + canvas_mc._height / 2;
- var viewportStartOffsetX = viewportStartPoint.x - canvasCenterX;
- var viewportStartOffsetY = viewportStartPoint.y - canvasCenterY;
- var dx = imageStartPoint.x + imageStartSize.x/2 + imageAttitude.w;
- var dy = imageStartPoint.y + imageStartSize.y/2 + imageAttitude.h;
- viewport_mc._x = canvasCenterX + viewportStartOffsetX + dx * viewportImageRatio;
- viewport_mc._y = canvasCenterY + viewportStartOffsetY + dy * viewportImageRatio;
+ viewport_mc._x = viewportStartCenter.x - viewportStartSize.x/2 - (imageDeltaX/2) * viewportImageRatio.x;
+ viewport_mc._y = viewportStartCenter.y - viewportStartSize.y/2 - (imageDeltaY/2) * viewportImageRatio.y;
*/
// TODO - remove this and scale viewport when zooming
Modified: z3c.reference/trunk/src/z3c/reference/browser/resources/imagetool.swf
===================================================================
(Binary files differ)
More information about the Checkins
mailing list