Skip to content

Commit

Permalink
Fixed bugs in ImagePyramidManager regarding validation. Added example…
Browse files Browse the repository at this point in the history
… for coordinates in MultiScaleImage component.
  • Loading branch information
gasi committed Aug 11, 2009
1 parent cd60b0f commit 84200c6
Show file tree
Hide file tree
Showing 11 changed files with 158 additions and 47 deletions.
18 changes: 18 additions & 0 deletions examples/flex/coordinates/.actionScriptProperties
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<actionScriptProperties mainApplicationPath="Coordinates.mxml" projectUUID="9037cbdc-ce89-414b-b6f7-4ff086744279" version="6">
<compiler additionalCompilerArguments="-locale en_US -use-network=false" autoRSLOrdering="true" copyDependentFiles="false" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="true" htmlPlayerVersionCheck="true" includeNetmonSwc="true" outputFolderPath="bin-debug" sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="false" useDebugRSLSwfs="true" verifyDigests="true" warn="true">
<compilerSourcePath>
<compilerSourcePathEntry kind="1" linkType="1" path="${OPENZOOM_HOME}/src"/>
</compilerSourcePath>
<libraryPath defaultLinkType="0">
<libraryPathEntry kind="4" path=""/>
<libraryPathEntry kind="1" linkType="1" path="${OPENZOOM_HOME}/lib"/>
</libraryPath>
<sourceAttachmentPath/>
</compiler>
<applications>
<application path="Coordinates.mxml"/>
</applications>
<modules/>
<buildCSSFiles/>
</actionScriptProperties>
2 changes: 2 additions & 0 deletions examples/flex/coordinates/.flexProperties
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<flexProperties flexServerFeatures="0" flexServerType="0" toolCompile="true" useServerFlexSDK="false" version="2"/>
25 changes: 25 additions & 0 deletions examples/flex/coordinates/.project
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Coordinates</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.adobe.flexbuilder.project.flexbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.adobe.flexbuilder.project.flexnature</nature>
<nature>com.adobe.flexbuilder.project.actionscriptnature</nature>
</natures>
<linkedResources>
<link>
<name>[source path] OpenZoom SDK</name>
<type>2</type>
<locationURI>OPENZOOM_HOME/src</locationURI>
</link>
</linkedResources>
</projectDescription>
@@ -0,0 +1,3 @@
#Tue Aug 11 22:07:36 CEST 2009
eclipse.preferences.version=1
encoding/<project>=utf-8
57 changes: 57 additions & 0 deletions examples/flex/coordinates/src/Coordinates.mxml
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<!--////////////////////////////////////////////////////////////////////////////
OpenZoom SDK Example
Copyright (c) 2007-2009, Daniel Gasienica <daniel@gasienica.ch>
License: MPL 1.1/GPL 3/LGPL 3
/////////////////////////////////////////////////////////////////////////////-->
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:openzoom="org.openzoom.flex.components.*"
xmlns:constraints="org.openzoom.flash.viewport.constraints.*"
xmlns:controllers="org.openzoom.flash.viewport.controllers.*"
xmlns:transformers="org.openzoom.flash.viewport.transformers.*"
backgroundGradientColors="[0, 0]"
layout="absolute"
applicationComplete="applicationCompleteHandler(event)"
>
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
private function applicationCompleteHandler(event:FlexEvent):void
{
image.addEventListener(MouseEvent.CLICK,
image_clickHandler,
false, 0, true)
}
private function image_clickHandler(event:MouseEvent):void
{
var imagePoint:Point = image.globalToLocal(new Point(event.stageX, event.stageY))
var scenePoint:Point = image.localToScene(imagePoint)
}
]]>
</mx:Script>
<openzoom:MultiScaleImage
id="image"
source="../../../../resources/images/deepzoom/billions.xml"
top="0"
right="0"
bottom="0"
left="0"
>
<openzoom:controllers>
<controllers:ContextMenuController/>
<controllers:MouseController/>
<controllers:KeyboardController/>
</openzoom:controllers>
<openzoom:constraint>
<constraints:CenterConstraint/>
</openzoom:constraint>
</openzoom:MultiScaleImage>
</mx:Application>
15 changes: 13 additions & 2 deletions examples/flex/multiscaleimage/.actionScriptProperties
@@ -1,11 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<actionScriptProperties mainApplicationPath="MultiScaleImageExample.mxml" projectUUID="7b68d03b-7a2f-42fb-a284-03d060152797" version="6">
<compiler additionalCompilerArguments="-locale en_US" autoRSLOrdering="true" copyDependentFiles="false" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="true" htmlPlayerVersionCheck="true" includeNetmonSwc="true" outputFolderPath="bin-debug" sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="false" useDebugRSLSwfs="true" verifyDigests="true" warn="true">
<compiler additionalCompilerArguments="-locale en_US" autoRSLOrdering="true" copyDependentFiles="false" flexSDK="Flex 4.0" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="true" htmlPlayerVersionCheck="true" includeNetmonSwc="true" outputFolderPath="bin-debug" sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="false" useDebugRSLSwfs="true" verifyDigests="true" warn="true">
<compilerSourcePath>
<compilerSourcePathEntry kind="1" linkType="1" path="${OPENZOOM_HOME}/src"/>
</compilerSourcePath>
<libraryPath defaultLinkType="0">
<libraryPathEntry kind="4" path=""/>
<libraryPathEntry kind="4" path="">
<modifiedEntries>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/datavisualization.swc" useDefaultLinkType="false"/>
<libraryPathEntry index="1" kind="3" linkType="4" path="${PROJECT_FRAMEWORKS}/libs/framework.swc" useDefaultLinkType="true">
<crossDomainRsls>
<crossDomainRslEntry autoExtract="true" policyFileUrl="" rslUrl="framework_3.4.0.5348.swz"/>
<crossDomainRslEntry autoExtract="true" policyFileUrl="" rslUrl="framework_3.4.0.5348.swf"/>
</crossDomainRsls>
</libraryPathEntry>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/rpc.swc" useDefaultLinkType="false"/>
</modifiedEntries>
</libraryPathEntry>
<libraryPathEntry kind="1" linkType="1" path="${OPENZOOM_HOME}/lib"/>
</libraryPath>
<sourceAttachmentPath/>
Expand Down
2 changes: 1 addition & 1 deletion examples/flex/multiscaleimage/.project
Expand Up @@ -17,7 +17,7 @@
</natures>
<linkedResources>
<link>
<name>[source path] OpenZoom SDK</name>
<name>[source path] src</name>
<type>2</type>
<locationURI>OPENZOOM_HOME/src</locationURI>
</link>
Expand Down
Expand Up @@ -17,8 +17,8 @@
layout="absolute"
>
<openzoom:MultiScaleImage
source="../../../../resources/images/deepzoom/morocco.xml"
id="image"
source="../../../../resources/images/deepzoom/morocco.xml"
top="0"
right="0"
bottom="0"
Expand Down
Expand Up @@ -292,7 +292,7 @@ public final class DeepZoomImageDescriptor extends ImagePyramidDescriptorBase
var longestSide:Number = Math.max(width, height)
var log2:Number = Math.log(longestSide) / Math.LN2
var maxLevel:uint = numLevels - 1
var index:int = clamp(Math.ceil(log2) + 1, 0, maxLevel)
var index:int = clamp(Math.ceil(log2)/* + 1*/, 0, maxLevel)
var level:IImagePyramidLevel = getLevelAt(index)

var pixelRatio:Number = width / level.width
Expand Down
Expand Up @@ -39,28 +39,28 @@
package org.openzoom.flash.renderers.images
{

import flash.display.BitmapData
import flash.display.Graphics
import flash.display.Shape
import flash.display.Sprite
import flash.events.Event
import flash.geom.Matrix
import flash.geom.Point
import flash.geom.Rectangle
import flash.utils.getTimer

import org.openzoom.flash.core.openzoom_internal
import org.openzoom.flash.descriptors.IImagePyramidDescriptor
import org.openzoom.flash.descriptors.IImagePyramidLevel
import org.openzoom.flash.descriptors.deepzoom.DeepZoomImageDescriptor
import org.openzoom.flash.events.ViewportEvent
import org.openzoom.flash.net.INetworkQueue
import org.openzoom.flash.scene.IMultiScaleScene
import org.openzoom.flash.scene.IReadonlyMultiScaleScene
import org.openzoom.flash.utils.Cache
import org.openzoom.flash.utils.IDisposable
import org.openzoom.flash.utils.MortonOrder
import org.openzoom.flash.viewport.INormalizedViewport
import flash.display.BitmapData;
import flash.display.Graphics;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.utils.getTimer;

import org.openzoom.flash.core.openzoom_internal;
import org.openzoom.flash.descriptors.IImagePyramidDescriptor;
import org.openzoom.flash.descriptors.IImagePyramidLevel;
import org.openzoom.flash.descriptors.deepzoom.DeepZoomImageDescriptor;
import org.openzoom.flash.events.ViewportEvent;
import org.openzoom.flash.net.INetworkQueue;
import org.openzoom.flash.scene.IMultiScaleScene;
import org.openzoom.flash.scene.IReadonlyMultiScaleScene;
import org.openzoom.flash.utils.Cache;
import org.openzoom.flash.utils.IDisposable;
import org.openzoom.flash.utils.MortonOrder;
import org.openzoom.flash.viewport.INormalizedViewport;

[ExcludeClass]
/**
Expand Down Expand Up @@ -120,11 +120,6 @@ public final class ImagePyramidRenderManager implements IDisposable
this.viewport.addEventListener(ViewportEvent.TRANSFORM_END,
viewport_transformEndHandler,
false, 0, true)

// Render loop
owner.addEventListener(Event.ENTER_FRAME,
enterFrameHandler,
false, 0, true)
}

//--------------------------------------------------------------------------
Expand Down Expand Up @@ -415,14 +410,12 @@ public final class ImagePyramidRenderManager implements IDisposable

//--------------------------------------------------------------------------
//
// Event handlers
//
//--------------------------------------------------------------------------
// Event haexitFrameHandler //--------------------------------------------------------------------------

/**
* @private
*/
private function enterFrameHandler(event:Event):void
private function exitFrameHandler(event:Event):void
{
// Rendering loop
validateDisplayList()
Expand Down Expand Up @@ -469,11 +462,11 @@ public final class ImagePyramidRenderManager implements IDisposable
{
if (renderers.indexOf(renderer) != -1)
throw new ArgumentError("[ImagePyramidRenderManager] " +
"Renderer already added.")
"ReexitFrameHandlerded.")

if (renderers.length == 0)
owner.addEventListener(Event.ENTER_FRAME,
enterFrameHandler,
owner.addEventListener(Event.EXIT_FRAME,
exitFrameHandler,
false, 0, true)

renderers.push(renderer)
Expand All @@ -495,8 +488,8 @@ public final class ImagePyramidRenderManager implements IDisposable
renderers.splice(index, 1)

if (renderers.length == 0)
owner.removeEventListener(Event.ENTER_FRAME,
enterFrameHandler)
owner.removeEventListener(Event.EXIT_FRAME,
exitFrameHandler)

return renderer
}
Expand All @@ -510,8 +503,8 @@ public final class ImagePyramidRenderManager implements IDisposable
public function dispose():void
{
// Remove render loop
owner.removeEventListener(Event.ENTER_FRAME,
enterFrameHandler)
owner.removeEventListener(Event.EXIT_FRAME,
exitFrameHandler)

// Remove render manager from all its renderers
for each (var renderer:ImagePyramidRenderer in renderers)
Expand Down
10 changes: 6 additions & 4 deletions src/org/openzoom/flex/components/MultiScaleContainer.as
Expand Up @@ -509,10 +509,10 @@ public final class MultiScaleContainer extends UIComponent
var targetY:Number = -vp.y * targetHeight

var target:DisplayObject = _scene.targetCoordinateSpace
target.x = targetX
target.y = targetY
target.width = targetWidth
target.height = targetHeight
target.x = targetX
target.y = targetY
target.width = targetWidth
target.height = targetHeight
}

//--------------------------------------------------------------------------
Expand Down Expand Up @@ -703,6 +703,7 @@ public final class MultiScaleContainer extends UIComponent
private function viewport_transformStartHandler(event:ViewportEvent):void
{
// trace("ViewportEvent.TRANSFORM_START")
invalidateDisplayList()
}

private function viewport_transformUpdateHandler(event:ViewportEvent):void
Expand All @@ -716,6 +717,7 @@ public final class MultiScaleContainer extends UIComponent
private function viewport_transformEndHandler(event:ViewportEvent):void
{
// trace("ViewportEvent.TRANSFORM_END")
invalidateDisplayList()
}

//--------------------------------------------------------------------------
Expand Down

0 comments on commit 84200c6

Please sign in to comment.