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