UC Berkeley Group for User Interface Research
Updated November 17, 2000

edu.berkeley.guir.lib.satin.view
Class SemanticZoomViewWrapper

java.lang.Object
  |
  +--edu.berkeley.guir.lib.satin.view.ViewImpl
        |
        +--edu.berkeley.guir.lib.satin.view.ViewWrapper
              |
              +--edu.berkeley.guir.lib.satin.view.SemanticZoomViewWrapper
All Implemented Interfaces:
Cloneable, SatinConstants, SemanticZoomView, Serializable, View
Direct Known Subclasses:
StickyViewWrapper

public class SemanticZoomViewWrapper
extends ViewWrapper
implements SemanticZoomView

Wraps normal views into a semantic-zoom view. A semantic zoom view is only displayed at certain programmer-specified zoom levels.

This software is distributed under the Berkeley Software License.

 Revisions:  - SATIN-v1.0-1.0.0, Aug 11 1999, JH
               Created class
             - SATIN-v2.1-1.0.0, Aug 11 2000, JH
               Touched for SATIN release
 

Since:
JDK 1.2.2
Version:
SATIN-v2.1-1.0.0, Aug 11 2000
Author:
Jason Hong ( jasonh@cs.berkeley.edu )
See Also:
Serialized Form

Inner classes inherited from class edu.berkeley.guir.lib.satin.SatinConstants
SatinConstants.ObjectPoolAffineTransform, SatinConstants.ObjectPoolPoint2D, SatinConstants.ObjectPoolPolygon2D, SatinConstants.ObjectPoolRectangle2D, SatinConstants.ObjectPoolStringBuffer, SatinConstants.UniqueAffineTransform, SatinConstants.UniquePoint2D, SatinConstants.UniquePolygon2D, SatinConstants.UniqueRectangle2D
 
Fields inherited from class edu.berkeley.guir.lib.satin.view.ViewImpl
gob, poly
 
Fields inherited from interface edu.berkeley.guir.lib.satin.SatinConstants
ABOVE, ALL, BAR, BELOW, clipboard, clprops, cmdqueue, cmdsubsys, CONTAINEDBY, CONTAINS, COORD_ABS, COORD_LOCAL, COORD_REL, DAMAGE_LATER, DAMAGE_NOW, DEBUG_GRAPHICS_OFFSET, DEBUG_STYLE_FILE, DEBUG_STYLE_GPROPERTY, DEEP, DEFAULT_POINT2D_POOL_SIZE, DEFAULT_POLYGON2D_POOL_SIZE, DEFAULT_RECTANGLE_POOL_SIZE, DEFAULT_REPAINT_THRESHOLD, DEFAULT_SELECT_THRESHOLD, DEFAULT_STRINGBUFFER_POOL_SIZE, DEFAULT_TRANSFORM_POOL_SIZE, DIR_CENTER, DIR_DOWN, DIR_DOWN_LEFT, DIR_DOWN_RIGHT, DIR_LEFT, DIR_RIGHT, DIR_UP, DIR_UP_LEFT, DIR_UP_RIGHT, FILTER_THRESHOLD, FIRST, FLOATING_PT_TOLERANCE, glprops, INTERSECTS, KEY_STYLE_DASHARRAY, KEY_STYLE_DASHPHASE, KEY_STYLE_DRAWCOLOR, KEY_STYLE_DRAWFONT, KEY_STYLE_DRAWTRANSPARENCY, KEY_STYLE_ENDCAP, KEY_STYLE_FILLCOLOR, KEY_STYLE_FILLTRANSPARENCY, KEY_STYLE_LINEJOIN, KEY_STYLE_LINEWIDTH, KEY_STYLE_MITERLIMIT, NEAR, NOTIFY_BOUNDS, NOTIFY_LAYER, NOTIFY_LOCATION, NOTIFY_STYLE, NOTIFY_TRANSFORM, poolPoints, poolPolys, poolRects, poolStrbuf, poolTx, rand, SATIN_DATA_DIRECTORY_DEFAULT, SATIN_DATA_DIRECTORY_GPROPERTY, SATIN_PROPERTIES_FILENAME, SHALLOW
 
Constructor Summary
SemanticZoomViewWrapper()
          Empty constructor, does nothing.
SemanticZoomViewWrapper(View v)
          Wrap a view into a semantic-zoom wrapper.
SemanticZoomViewWrapper(View v, double start, double end)
          Create a new semantic zoom view with the specified range.
SemanticZoomViewWrapper(View v, double fIn, double s, double e, double fOut)
          Create a new semantic zoom view with the specified range.
 
Method Summary
 Object clone()
          Implementation of the Sorceror's Apprentice algorithm.
protected  SemanticZoomViewWrapper clone(SemanticZoomViewWrapper vw)
           
 double getEndScale()
          Get the end of the scale range in which the view will stop being displayed fully.
 double getFadeIn()
          Get the beginning of the scale range in which the view will begin to fade in.
 double getFadeOut()
          Get the beginning of the scale range in which the view will begin to fade out.
protected  double getScaleFactor()
          Get the absolute scale factor.
 double getStartScale()
          Get the beginning of the scale range in which the view will begin being displayed fully.
 float getViewDisplayValue()
          Check whether or not this view is valid, ie can and should be displayed.
 void render(SatinGraphics g)
          Render this view.
 void setDisplayRange(double startScale, double endScale)
          Calls setDisplayRange(double, double, double, double), setting the fade-in value to be startScale, and fadeOut to be endScale.
 void setDisplayRange(double fadeIn, double startScale, double endScale, double fadeOut)
          Set the range of values.
 String toString()
           
 
Methods inherited from class edu.berkeley.guir.lib.satin.view.ViewWrapper
clone, getBoundingPoints2DRef, getName, getView, setAttachedGraphicalObject, setBoundingPoints2DRef, setView
 
Methods inherited from class edu.berkeley.guir.lib.satin.view.ViewImpl
clone, getAttachedGraphicalObject, isVisible, setName, setVisible
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface edu.berkeley.guir.lib.satin.view.View
getAttachedGraphicalObject, getBoundingPoints2DRef, getName, isVisible, setAttachedGraphicalObject, setBoundingPoints2DRef, setName, setVisible
 

Constructor Detail

SemanticZoomViewWrapper

public SemanticZoomViewWrapper()
Empty constructor, does nothing.

SemanticZoomViewWrapper

public SemanticZoomViewWrapper(View v)
Wrap a view into a semantic-zoom wrapper. By default, this semantic zoom wrapper is active from zoom scale 0 to infinity.

SemanticZoomViewWrapper

public SemanticZoomViewWrapper(View v,
                               double start,
                               double end)
Create a new semantic zoom view with the specified range.
See Also:
setDisplayRange(double, double)

SemanticZoomViewWrapper

public SemanticZoomViewWrapper(View v,
                               double fIn,
                               double s,
                               double e,
                               double fOut)
Create a new semantic zoom view with the specified range.
Parameters:
fIn - is the fade-in value.
s - is the start display value.
e - is the end display value.
fOut - is the fade-out value.
See Also:
setDisplayRange(double, double, double, double)
Method Detail

setDisplayRange

public void setDisplayRange(double fadeIn,
                            double startScale,
                            double endScale,
                            double fadeOut)
Description copied from interface: SemanticZoomView
Set the range of values. Please note that the passed scale variables should be increasing from left-to-right. That is, fadeIn < startScale < endScale < fadeOut.

What happens during zooming can be thought of as a trapezoid (see below). Starting from the left, the object appears at fadeIn, becomes more solid until it reaches startScale, remains solid until it reaches endScale, and starts becoming translucent again as it moves towards fadeOut.

             ______________________
           /|                      |\
         /  |                      |  \
       /    |                      |    \
     /      |                      |      \
   /        |                      |        \
 fadeIn   startScale          endScale    fadeOut
 
Specified by:
setDisplayRange in interface SemanticZoomView
Following copied from interface: edu.berkeley.guir.lib.satin.view.SemanticZoomView
Parameters:
fadeIn - is the scale value (absolute zoom) to start fading in.
startScale - is the scale value (absolute zoom) to start displaying without any fade.
endScale - is the scale value (absolute zoom) to stop displaying.
fadeOut - is the scale value (absolute zoom) to start fading out.

setDisplayRange

public void setDisplayRange(double startScale,
                            double endScale)
Description copied from interface: SemanticZoomView
Calls SemanticZoomView.setDisplayRange(double, double, double, double), setting the fade-in value to be startScale, and fadeOut to be endScale.
Specified by:
setDisplayRange in interface SemanticZoomView

getFadeIn

public double getFadeIn()
Description copied from interface: SemanticZoomView
Get the beginning of the scale range in which the view will begin to fade in.
Specified by:
getFadeIn in interface SemanticZoomView
Following copied from interface: edu.berkeley.guir.lib.satin.view.SemanticZoomView
Returns:
a double representing an absolute scale factor.

getStartScale

public double getStartScale()
Description copied from interface: SemanticZoomView
Get the beginning of the scale range in which the view will begin being displayed fully.
Specified by:
getStartScale in interface SemanticZoomView
Following copied from interface: edu.berkeley.guir.lib.satin.view.SemanticZoomView
Returns:
a double representing an absolute scale factor.

getEndScale

public double getEndScale()
Description copied from interface: SemanticZoomView
Get the end of the scale range in which the view will stop being displayed fully.
Specified by:
getEndScale in interface SemanticZoomView
Following copied from interface: edu.berkeley.guir.lib.satin.view.SemanticZoomView
Returns:
a double representing an absolute scale factor.

getFadeOut

public double getFadeOut()
Description copied from interface: SemanticZoomView
Get the beginning of the scale range in which the view will begin to fade out.
Specified by:
getFadeOut in interface SemanticZoomView
Following copied from interface: edu.berkeley.guir.lib.satin.view.SemanticZoomView
Returns:
a double representing an absolute scale factor.

getScaleFactor

protected double getScaleFactor()
Get the absolute scale factor.

getViewDisplayValue

public float getViewDisplayValue()
Description copied from interface: View
Check whether or not this view is valid, ie can and should be displayed. This can be a combination of any range of parameters. For example, you could say that this view is valid when:
Specified by:
getViewDisplayValue in interface View
Following copied from interface: edu.berkeley.guir.lib.satin.view.View
Returns:
a value between 0.0 and 1.0, with 0.0 meaning do not display, and 1.0 meaning must display.

toString

public String toString()
Overrides:
toString in class ViewWrapper

render

public void render(SatinGraphics g)
Description copied from interface: View
Render this view. Use (0,0) as the top-left corner of this view. Any transformations that the attached GraphicalObject has will automatically be applied, so all you have to do is render the view normally.
Specified by:
render in interface View

clone

public Object clone()
Description copied from interface: View
Implementation of the Sorceror's Apprentice algorithm. Needs to be a DEEP clone.
Specified by:
clone in interface View
Overrides:
clone in class ViewImpl

clone

protected SemanticZoomViewWrapper clone(SemanticZoomViewWrapper vw)

Copyright Information