http://www.jpicedt.org

jpicedt.graphic.view
Class TextViewHybrid

java.lang.Object
  extended by jpicedt.graphic.view.AbstractView
      extended by jpicedt.graphic.view.LeafElementView
          extended by jpicedt.graphic.view.TextViewHybrid
All Implemented Interfaces:
Runnable, View

public class TextViewHybrid
extends LeafElementView
implements Runnable

a View for rendering Text's based on bitmaps (when available) or TextLayout (when image not available)


Field Summary
protected  boolean areDimensionsComputed
           
protected  int fileDPI
           
protected  BufferedImage image
           
protected  double strx
           
protected  double stry
           
protected  AffineTransform text2ModelTr
           
protected  TextLayout textLayout
           
 
Fields inherited from class jpicedt.graphic.view.LeafElementView
attrFactory, interiorPaint, leftArrow, outlinePaint, outlineStroke, overstrikeStroke, rightArrow, shadow, shadowPaint, shape
 
Fields inherited from class jpicedt.graphic.view.AbstractView
bounds, element, highlighter
 
Constructor Summary
TextViewHybrid(PicText te, AttributesViewFactory f)
          construct a new View for the given PicRectangle
 
Method Summary
 void changedUpdate(DrawingEvent.EventType eventType)
          Give notification from the model that a change occured to the text this view is responsible for rendering.
protected  void getDimensionsFromLogFile(BufferedReader reader, PicText text)
           
 PicText getElement()
          Returns the element the View is responsible for rendering
protected  double getRotation()
          Returns the text rotation in radians : subclassers that don't support rotating text may return 0 here.
 TextLayout getTextLayout()
          [SR:pending] make this view implement aka TextEditableView interface (or something like it), where TextEditableView is a subinterface of View with text-editing specific capabilities.
 AffineTransform getTextToModelTransform()
          Return an affine transform which translat b/w the TextLayout coordinate system and the jpicedt.graphic.model coordinate system.
 HitInfo hitTest(PEMouseEvent e)
          This implementation calls super.hitTest and returns the result if non-null (this should be a HitInfo.Point), then returns a HitInfo.Interior if the mouse-click occured inside the text bound (as defined by text layout)
 void paint(Graphics2D g, Rectangle2D a)
          Render the View to the given graphic context.
 void run()
           
protected  void syncBounds()
          Synchronizes bounding box with the model ;
protected  void syncFrame()
          synchronize frame shape and location (TextLayout only) ; this is called by syncShape(), so that subclasser might override easily when only rectangular shapes are availables.
protected  void syncShape()
          Synchronize the textLayout and the shape (=frame box, by calling syncFrame) with the model When TextLayout is used, this delegates to getRotation() where computing rotation angle is concerned, and updates the AffineTransform returned by getTextToModelTransform().
protected  void syncStringLocation()
          update strx stry = location of TextLayout's bottom-Left corner with respect to PicText's anchor-point
 
Methods inherited from class jpicedt.graphic.view.LeafElementView
intersect, syncArrowsAttributes, syncArrowsGeometry, syncAttributes, syncShadow
 
Methods inherited from class jpicedt.graphic.view.AbstractView
getBounds, getContainer, getDrawing, getGraphics, getHighlighter, getParentView, getViewFactory, hitTest, intersect, paintHighlighter, repaint, setElement, setHighlighter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

strx

protected double strx

stry

protected double stry

textLayout

protected TextLayout textLayout

text2ModelTr

protected AffineTransform text2ModelTr

image

protected BufferedImage image

areDimensionsComputed

protected boolean areDimensionsComputed

fileDPI

protected int fileDPI
Constructor Detail

TextViewHybrid

public TextViewHybrid(PicText te,
                      AttributesViewFactory f)
construct a new View for the given PicRectangle

Method Detail

getElement

public PicText getElement()
Description copied from interface: View
Returns the element the View is responsible for rendering

Specified by:
getElement in interface View
Overrides:
getElement in class AbstractView
Returns:
the element the View is responsible for rendering.

getRotation

protected double getRotation()
Returns the text rotation in radians : subclassers that don't support rotating text may return 0 here. Used by TextLayout only.


changedUpdate

public void changedUpdate(DrawingEvent.EventType eventType)
Give notification from the model that a change occured to the text this view is responsible for rendering.

Specified by:
changedUpdate in interface View
Overrides:
changedUpdate in class LeafElementView

run

public void run()
Specified by:
run in interface Runnable

syncStringLocation

protected void syncStringLocation()
update strx stry = location of TextLayout's bottom-Left corner with respect to PicText's anchor-point


syncShape

protected void syncShape()
Synchronize the textLayout and the shape (=frame box, by calling syncFrame) with the model When TextLayout is used, this delegates to getRotation() where computing rotation angle is concerned, and updates the AffineTransform returned by getTextToModelTransform().

Overrides:
syncShape in class LeafElementView

syncFrame

protected void syncFrame()
synchronize frame shape and location (TextLayout only) ; this is called by syncShape(), so that subclasser might override easily when only rectangular shapes are availables.


getDimensionsFromLogFile

protected void getDimensionsFromLogFile(BufferedReader reader,
                                        PicText text)

syncBounds

protected void syncBounds()
Synchronizes bounding box with the model ;

Overrides:
syncBounds in class LeafElementView

paint

public void paint(Graphics2D g,
                  Rectangle2D a)
Render the View to the given graphic context. This implementation render the interior first, then the outline.

Specified by:
paint in interface View
Overrides:
paint in class LeafElementView
a - the current graphic clip

hitTest

public HitInfo hitTest(PEMouseEvent e)
This implementation calls super.hitTest and returns the result if non-null (this should be a HitInfo.Point), then returns a HitInfo.Interior if the mouse-click occured inside the text bound (as defined by text layout)

Overrides:
hitTest in class LeafElementView
Returns:
a HitInfo corresponding to the given mouse-event

getTextLayout

public TextLayout getTextLayout()
[SR:pending] make this view implement aka TextEditableView interface (or something like it), where TextEditableView is a subinterface of View with text-editing specific capabilities. Returns the TextLayout which is responsible for painting the textual content of this element


getTextToModelTransform

public AffineTransform getTextToModelTransform()
Return an affine transform which translat b/w the TextLayout coordinate system and the jpicedt.graphic.model coordinate system. [SR:pending] refactor method name to something more explanatory


http://www.jpicedt.org

Submit a bug : syd@jpicedt.org