BackgroundPainter.java
上传用户:haobig99
上传日期:2022-06-15
资源大小:369k
文件大小:3k
- /*
- * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
- package com.sun.lwuit.painter;
- import com.sun.lwuit.Component;
- import com.sun.lwuit.Graphics;
- import com.sun.lwuit.Image;
- import com.sun.lwuit.Painter;
- import com.sun.lwuit.geom.Rectangle;
- import com.sun.lwuit.plaf.Style;
- /**
- * A painter that draws the background of a component based on its style
- *
- * @author Shai Almog
- */
- public class BackgroundPainter implements Painter {
- private Component parent;
-
- /**
- * Construct a background painter for the given component
- *
- * @param the parent component
- */
- public BackgroundPainter(Component parent) {
- this.parent = parent;
- }
-
- /**
- * @inheritDoc
- */
- public void paint(Graphics g, Rectangle rect) {
- Style s = parent.getStyle();
- int x = rect.getX();
- int y = rect.getY();
- int width = rect.getSize().getWidth();
- int height = rect.getSize().getHeight();
- if (width <= 0 || height <= 0) {
- return;
- }
- Image bgImage = s.getBgImage();
- if (bgImage == null) {
- g.setColor(s.getBgColor());
- g.fillRect(x, y, width, height, s.getBgTransparency());
- } else {
- if (s.getBackgroundType() == Style.BACKGROUND_IMAGE_SCALED) {
- if (bgImage.getWidth() != width || bgImage.getHeight() != height) {
- bgImage = bgImage.scaled(width, height);
- s.setBgImage(bgImage, true);
- }
- } else {
- int iW = bgImage.getWidth();
- int iH = bgImage.getHeight();
- for(int xPos = 0 ; xPos < width ; xPos += iW) {
- for(int yPos = 0 ; yPos < height ; yPos += iH) {
- g.drawImage(s.getBgImage(), x + xPos, y + yPos);
- }
- }
- return;
- }
- g.drawImage(s.getBgImage(), x, y);
- }
- }
- }