You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by tv...@apache.org on 2009/11/17 20:38:48 UTC
svn commit: r881456 - in /incubator/pivot/trunk:
demos/src/org/apache/pivot/demos/clock/ wtk/src/org/apache/pivot/wtk/
wtk/src/org/apache/pivot/wtk/content/ wtk/src/org/apache/pivot/wtk/media/
wtk/src/org/apache/pivot/wtk/skin/
Author: tvolkert
Date: Tue Nov 17 19:38:45 2009
New Revision: 881456
URL: http://svn.apache.org/viewvc?rev=881456&view=rev
Log:
Added no-arg getBaseline() to Visual(), added baseline mutator methods to Picture and Drawing, implemented ImageViewSkin.getBaseline(int,int) to look for the baseline in the image.
Modified:
incubator/pivot/trunk/demos/src/org/apache/pivot/demos/clock/Clock.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Visual.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewMultiCellRenderer.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Drawing.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Image.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/ImageListener.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Movie.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/MovieListener.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Picture.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ImageViewSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/TextAreaSkin.java
Modified: incubator/pivot/trunk/demos/src/org/apache/pivot/demos/clock/Clock.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/demos/src/org/apache/pivot/demos/clock/Clock.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/demos/src/org/apache/pivot/demos/clock/Clock.java (original)
+++ incubator/pivot/trunk/demos/src/org/apache/pivot/demos/clock/Clock.java Tue Nov 17 19:38:45 2009
@@ -49,6 +49,11 @@
}
@Override
+ public void baselineChanged(Image image, int previousBaseline) {
+ movieListeners.baselineChanged(Clock.this, previousBaseline);
+ }
+
+ @Override
public void regionUpdated(Image image, int x, int y, int width, int height) {
movieListeners.regionUpdated(Clock.this, x, y, width, height);
}
@@ -88,6 +93,11 @@
}
@Override
+ public int getBaseline() {
+ return image.getBaseline();
+ }
+
+ @Override
public void paint(Graphics2D graphics) {
image.paint(graphics);
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java Tue Nov 17 19:38:45 2009
@@ -1450,7 +1450,19 @@
}
/**
- * Returns the component's baseline for a given width.
+ * Returns the component's baseline.
+ *
+ * @return
+ * The baseline relative to the origin of this component, or <tt>-1</tt> if
+ * this component does not have a baseline.
+ */
+ @Override
+ public int getBaseline() {
+ return skin.getBaseline();
+ }
+
+ /**
+ * Returns the component's baseline for a given width and height.
*
* @return
* The baseline relative to the origin of this component, or <tt>-1</tt> if
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Visual.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Visual.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Visual.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Visual.java Tue Nov 17 19:38:45 2009
@@ -34,6 +34,15 @@
public int getHeight();
/**
+ * Returns the visual's baseline.
+ *
+ * @return
+ * The baseline relative to the origin of the visual, or <tt>-1</tt> if
+ * this visual does not have a baseline.
+ */
+ public int getBaseline();
+
+ /**
* Paints the visual.
*
* @param graphics
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewMultiCellRenderer.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewMultiCellRenderer.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewMultiCellRenderer.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewMultiCellRenderer.java Tue Nov 17 19:38:45 2009
@@ -267,6 +267,11 @@
}
@Override
+ public int getBaseline() {
+ return currentRenderer.getBaseline();
+ }
+
+ @Override
public void paint(Graphics2D graphics) {
currentRenderer.paint(graphics);
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Drawing.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Drawing.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Drawing.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Drawing.java Tue Nov 17 19:38:45 2009
@@ -54,6 +54,8 @@
private Dimensions size = null;
+ private int baseline = -1;
+
private CanvasListener canvasListener = new CanvasListener() {
@Override
public void regionUpdated(Canvas canvas, int x, int y, int width, int height) {
@@ -77,16 +79,32 @@
setCanvas(new Canvas());
}
+ @Override
public int getWidth() {
validate();
return size.width;
}
+ @Override
public int getHeight() {
validate();
return size.height;
}
+ @Override
+ public int getBaseline() {
+ return baseline;
+ }
+
+ public void setBaseline(int baseline) {
+ int previousBaseline = this.baseline;
+
+ if (baseline != previousBaseline) {
+ this.baseline = baseline;
+ imageListeners.baselineChanged(this, previousBaseline);
+ }
+ }
+
private void invalidate() {
size = null;
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Image.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Image.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Image.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Image.java Tue Nov 17 19:38:45 2009
@@ -50,6 +50,13 @@
}
@Override
+ public void baselineChanged(Image image, int previousBaseline) {
+ for (ImageListener listener : this) {
+ listener.baselineChanged(image, previousBaseline);
+ }
+ }
+
+ @Override
public void regionUpdated(Image image, int x, int y, int width, int height) {
for (ImageListener listener : this) {
listener.regionUpdated(image, x, y, width, height);
@@ -112,6 +119,11 @@
protected ImageListenerList imageListeners = new ImageListenerList();
+ @Override
+ public int getBaseline() {
+ return -1;
+ }
+
public Dimensions getSize() {
return new Dimensions(getWidth(), getHeight());
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/ImageListener.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/ImageListener.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/ImageListener.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/ImageListener.java Tue Nov 17 19:38:45 2009
@@ -30,6 +30,14 @@
public void sizeChanged(Image image, int previousWidth, int previousHeight);
/**
+ * Called when an image's baseline has changed.
+ *
+ * @param image
+ * @param previousBaseline
+ */
+ public void baselineChanged(Image image, int previousBaseline);
+
+ /**
* Called when a region within an image needs to be repainted.
*
* @param image
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Movie.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Movie.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Movie.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Movie.java Tue Nov 17 19:38:45 2009
@@ -40,6 +40,13 @@
}
@Override
+ public void baselineChanged(Movie movie, int previousBaseline) {
+ for (MovieListener listener : this) {
+ listener.baselineChanged(movie, previousBaseline);
+ }
+ }
+
+ @Override
public void currentFrameChanged(Movie movie, int previousFrame) {
for (MovieListener listener : this) {
listener.currentFrameChanged(movie, previousFrame);
@@ -98,6 +105,11 @@
}
};
+ @Override
+ public int getBaseline() {
+ return -1;
+ }
+
public Dimensions getSize() {
return new Dimensions(getWidth(), getHeight());
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/MovieListener.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/MovieListener.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/MovieListener.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/MovieListener.java Tue Nov 17 19:38:45 2009
@@ -29,6 +29,10 @@
}
@Override
+ public void baselineChanged(Movie movie, int previousBaseline) {
+ }
+
+ @Override
public void currentFrameChanged(Movie movie, int previousFrame) {
}
@@ -59,6 +63,14 @@
public void sizeChanged(Movie movie, int previousWidth, int previousHeight);
/**
+ * Called when a movie's baseline has changed.
+ *
+ * @param movie
+ * @param previousBaseline
+ */
+ public void baselineChanged(Movie movie, int previousBaseline);
+
+ /**
* Called when the movie's current frame changed.
*
* @param movie
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Picture.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Picture.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Picture.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/media/Picture.java Tue Nov 17 19:38:45 2009
@@ -39,6 +39,8 @@
// when modified?
private BufferedImage bufferedImage = null;
+ private int baseline = -1;
+
public Picture(BufferedImage bufferedImage) {
if (bufferedImage == null) {
throw new IllegalArgumentException("bufferedImage is null.");
@@ -142,6 +144,20 @@
}
@Override
+ public int getBaseline() {
+ return baseline;
+ }
+
+ public void setBaseline(int baseline) {
+ int previousBaseline = this.baseline;
+
+ if (baseline != previousBaseline) {
+ this.baseline = baseline;
+ imageListeners.baselineChanged(this, previousBaseline);
+ }
+ }
+
+ @Override
public void paint(Graphics2D graphics) {
graphics.drawImage(bufferedImage, 0, 0, null);
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java Tue Nov 17 19:38:45 2009
@@ -110,8 +110,13 @@
}
@Override
+ public final int getBaseline() {
+ return getBaseline(width, height);
+ }
+
+ @Override
public int getBaseline(int width, int height) {
- return -1;
+ return -1;
}
@Override
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ImageViewSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ImageViewSkin.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ImageViewSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ImageViewSkin.java Tue Nov 17 19:38:45 2009
@@ -59,6 +59,11 @@
}
@Override
+ public void baselineChanged(Image image, int previousBaseline) {
+ invalidateComponent();
+ }
+
+ @Override
public void regionUpdated(Image image, int x, int y, int width, int height) {
// TODO A rounding error is causing an off-by-one error; we're
// accounting for it here by adding 1 to width and height
@@ -109,6 +114,39 @@
}
@Override
+ public int getBaseline(int width, int height) {
+ ImageView imageView = (ImageView)getComponent();
+ Image image = imageView.getImage();
+
+ int baseline = -1;
+
+ if (image != null) {
+ baseline = image.getBaseline();
+
+ if (baseline != -1) {
+ Dimensions imageSize = image.getSize();
+
+ if (fill) {
+ // Scale to fit
+ if (preserveAspectRatio) {
+ // TODO
+ } else {
+ baseline *= (float)height / (float)imageSize.height;
+ }
+ } else {
+ if (verticalAlignment == VerticalAlignment.CENTER) {
+ baseline += (height - imageSize.height) / 2;
+ } else if (verticalAlignment == VerticalAlignment.BOTTOM) {
+ baseline += height - imageSize.height;
+ }
+ }
+ }
+ }
+
+ return baseline;
+ }
+
+ @Override
public void layout() {
ImageView imageView = (ImageView)getComponent();
Image image = imageView.getImage();
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/TextAreaSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/TextAreaSkin.java?rev=881456&r1=881455&r2=881456&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/TextAreaSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/TextAreaSkin.java Tue Nov 17 19:38:45 2009
@@ -121,6 +121,12 @@
return height;
}
+ @Override
+ public int getBaseline() {
+ // TODO Can this return a valid value?
+ return -1;
+ }
+
public Dimensions getSize() {
return new Dimensions(width, height);
}
@@ -1317,10 +1323,17 @@
}
}
+ @Override
public void sizeChanged(Image image, int previousWidth, int previousHeight) {
invalidate();
}
+ @Override
+ public void baselineChanged(Image image, int previousBaseline) {
+ // TODO Invalidate once baseline alignment of node view is supported
+ }
+
+ @Override
public void regionUpdated(Image image, int x, int y, int width, int height) {
// TODO Repaint the corresponding area of the component (add a repaint()
// method to NodeView to facilitate this as well as paint-only updates