BackgroundPainter.java
上传用户:haobig99
上传日期:2022-06-15
资源大小:369k
文件大小:3k
源码类别:

J2ME

开发平台:

Java

  1. /*
  2.  * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
  3.  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4.  *
  5.  * This code is free software; you can redistribute it and/or modify it
  6.  * under the terms of the GNU General Public License version 2 only, as
  7.  * published by the Free Software Foundation.  Sun designates this
  8.  * particular file as subject to the "Classpath" exception as provided
  9.  * by Sun in the LICENSE file that accompanied this code.
  10.  *
  11.  * This code is distributed in the hope that it will be useful, but WITHOUT
  12.  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13.  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14.  * version 2 for more details (a copy is included in the LICENSE file that
  15.  * accompanied this code).
  16.  *
  17.  * You should have received a copy of the GNU General Public License version
  18.  * 2 along with this work; if not, write to the Free Software Foundation,
  19.  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20.  *
  21.  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  22.  * CA 95054 USA or visit www.sun.com if you need additional information or
  23.  * have any questions.
  24.  */
  25. package com.sun.lwuit.painter;
  26. import com.sun.lwuit.Component;
  27. import com.sun.lwuit.Graphics;
  28. import com.sun.lwuit.Image;
  29. import com.sun.lwuit.Painter;
  30. import com.sun.lwuit.geom.Rectangle;
  31. import com.sun.lwuit.plaf.Style;
  32. /**
  33.  * A painter that draws the background of a component based on its style
  34.  *
  35.  * @author Shai Almog
  36.  */
  37. public class BackgroundPainter implements Painter {
  38.     private Component parent;
  39.     
  40.     /**
  41.      * Construct a background painter for the given component
  42.      * 
  43.      * @param the parent component
  44.      */
  45.     public BackgroundPainter(Component parent) {
  46.         this.parent = parent;
  47.     }
  48.     
  49.     /**
  50.      * @inheritDoc
  51.      */
  52.     public void paint(Graphics g, Rectangle rect) {
  53.         Style s = parent.getStyle();
  54.         int x = rect.getX();
  55.         int y = rect.getY();
  56.         int width = rect.getSize().getWidth();
  57.         int height = rect.getSize().getHeight();
  58.         if (width <= 0 || height <= 0) {
  59.             return;
  60.         }
  61.         Image bgImage = s.getBgImage();
  62.         if (bgImage == null) {
  63.             g.setColor(s.getBgColor());
  64.             g.fillRect(x, y, width, height, s.getBgTransparency());
  65.         } else {
  66.             if (s.getBackgroundType() == Style.BACKGROUND_IMAGE_SCALED) {
  67.                 if (bgImage.getWidth() != width || bgImage.getHeight() != height) {
  68.                     bgImage = bgImage.scaled(width, height);
  69.                     s.setBgImage(bgImage, true);
  70.                 }
  71.             } else {
  72.                 int iW = bgImage.getWidth();
  73.                 int iH = bgImage.getHeight();
  74.                 for(int xPos = 0 ; xPos < width ; xPos += iW) { 
  75.                     for(int yPos = 0 ; yPos < height ; yPos += iH) { 
  76.                         g.drawImage(s.getBgImage(), x + xPos, y + yPos);
  77.                     }
  78.                 }
  79.                 return;
  80.             }
  81.             g.drawImage(s.getBgImage(), x, y);
  82.         }
  83.     }
  84. }