home *** CD-ROM | disk | FTP | other *** search
-
- public interface DrawConstants
- {
- public static final String PENCIL = "Pencil";
- public static final String ERASER = "Eraser";
- public static final String PAINT = "Paint";
- public static final String DROPPER = "Dropper";
- public static final String HAND = "Hand";
- public static final String LINE = "Line";
- public static final String OVAL = "Oval";
- public static final String RECT = "Rect";
- public static final String ROUND_RECT = "RoundRect";
- public static final String FILL_OVAL = "FillOval";
- public static final String FILL_RECT = "FillRect";
- public static final String FILL_ROUND_RECT = "FillRoundRect";
- public static final String CUT = "Cut";
- public static final String COPY = "Copy";
- public static final String PASTE = "Paste";
- }
-
-
- import java.awt.*;
- import java.awt.event.*;
- import java.util.*;
- import javax.swing.*;
- import javax.swing.border.*;
-
- public class DrawToolbar extends ToolPanel
- implements DrawConstants, ActionListener
- {
- protected ArrayList listeners = new ArrayList();
- protected Cursor cursor;
-
- protected DrawButton[] buttons =
- {
- // new DrawButton(CUT, new Point(2, 2)),
- // new DrawButton(COPY, new Point(2, 2)),
- // new DrawButton(PASTE, new Point(2, 2)),
-
- new DrawButton(PENCIL, new Point(4, 15)),
- new DrawButton(DROPPER, new Point(0, 15)),
- new DrawButton(PAINT, new Point(13, 14)),
-
- new DrawButton(ERASER, new Point(1, 13)),
- new DrawButton(HAND, new Point(8, 8)),
- new DrawButton(LINE, new Point(2, 2)),
-
- new DrawButton(OVAL, new Point(2, 2)),
- new DrawButton(RECT, new Point(2, 2)),
- new DrawButton(ROUND_RECT, new Point(2, 2)),
-
- new DrawButton(FILL_OVAL, new Point(2, 2)),
- new DrawButton(FILL_RECT, new Point(2, 2)),
- new DrawButton(FILL_ROUND_RECT, new Point(2, 2))
- };
-
- public DrawToolbar()
- {
- setBorder(new CompoundBorder(
- new EtchedBorder(),
- new EmptyBorder(4, 4, 4, 4)));
- setLayout(new GridLayout(4, 3, 2, 2));
- ButtonGroup group = new ButtonGroup();
- for (int i = 0; i < buttons.length; i++)
- {
- add(buttons[i]);
- group.add(buttons[i]);
- buttons[i].addActionListener(this);
- }
- }
-
- public void actionPerformed(ActionEvent event)
- {
- DrawButton button = (DrawButton)event.getSource();
- cursor = button.getToolCursor();
- fireActionEvent(button.getCommand());
- }
-
- public Cursor getToolCursor()
- {
- return cursor;
- }
- }
-
-
- import java.io.File;
- import javax.swing.filechooser.*;
-
- public class GIFFileFilter extends FileFilter
- {
- public boolean accept(File file)
- {
- return file.toString().toLowerCase().endsWith(".gif");
- }
-
- public String getDescription()
- {
- return "GIF File";
- }
- }
-
-
-
- import java.awt.*;
- import java.awt.image.*;
- import javax.swing.*;
-
- public class ImageOps implements SwingConstants
- {
- protected BufferedImage moveImage(
- BufferedImage image, int x, int y)
- {
- int w = image.getWidth();
- int h = image.getHeight();
- BufferedImage buffer = new BufferedImage(
- w, h, BufferedImage.TYPE_INT_ARGB);
- Graphics gc = buffer.getGraphics();
- gc.drawImage(image, 0, 0, null);
- image = new BufferedImage(
- w, h, BufferedImage.TYPE_INT_ARGB);
- Graphics g = image.getGraphics();
- g.drawImage(buffer, x, y, null);
- return image;
- }
-
- protected BufferedImage flipImage(
- BufferedImage image, int direction)
- {
- int w = image.getWidth();
- int h = image.getHeight();
- BufferedImage buffer = new BufferedImage(
- w, h, BufferedImage.TYPE_INT_ARGB);
- Graphics gc = buffer.getGraphics();
- if (direction == HORIZONTAL)
- gc.drawImage(image, w, 0, 0, h, 0, 0, w, h, null);
- else
- gc.drawImage(image, 0, h, w, 0, 0, 0, w, h, null);
- image = new BufferedImage(
- w, h, BufferedImage.TYPE_INT_ARGB);
- Graphics g = image.getGraphics();
- g.drawImage(buffer, 0, 0, null);
- return image;
- }
-
- protected BufferedImage rotateImage(
- BufferedImage image, int direction)
- {
- int w = image.getWidth();
- int h = image.getHeight();
- BufferedImage buffer = new BufferedImage(
- w, h, BufferedImage.TYPE_INT_ARGB);
- Graphics2D gc = (Graphics2D)buffer.getGraphics();
- if (direction == RIGHT)
- {
- gc.translate(w, 0);
- gc.rotate(Math.PI / 2);
- }
- if (direction == LEFT)
- {
- gc.translate(0, h);
- gc.rotate(-(Math.PI / 2));
- }
- gc.drawImage(image, 0, 0, null);
-
- image = new BufferedImage(
- w, h, BufferedImage.TYPE_INT_ARGB);
- Graphics g = image.getGraphics();
- g.drawImage(buffer, 0, 0, null);
- return image;
- }
-
- protected void floodFill(BufferedImage buffer,
- int x, int y, int oldColor, int newColor)
- {
- int w = buffer.getWidth();
- int h = buffer.getHeight();
- if (y < 0 || y >= h) return;
- if (x < 0 || x >= w) return;
- int pos = x;
- while (buffer.getRGB(pos, y) == oldColor)
- {
- buffer.setRGB(pos, y, newColor);
- if (y > 0 && buffer.getRGB(pos, y - 1) == oldColor)
- floodFill(buffer, pos, y - 1, oldColor, newColor);
- if ((y + 1) < h && buffer.getRGB(pos, y + 1) == oldColor)
- floodFill(buffer, pos, y + 1, oldColor, newColor);
- pos--;
- if (pos < 0) break;
- }
- pos = x + 1;
- if (pos >= w) return;
- while (buffer.getRGB(pos, y) == oldColor)
- {
- buffer.setRGB(pos, y, newColor);
- if (y > 0 && buffer.getRGB(pos, y - 1) == oldColor)
- floodFill(buffer, pos, y - 1, oldColor, newColor);
- if ((y + 1) < h && buffer.getRGB(pos, y + 1) == oldColor)
- floodFill(buffer, pos, y + 1, oldColor, newColor);
- pos++;
- if (pos >= w) break;
- }
- }
- }
-
-
- import java.awt.*;
- import java.awt.event.*;
- import java.awt.image.*;
- import javax.swing.*;
- import javax.swing.border.*;
-
- public class JIconEditor extends JPanel
- {
- public JIconEditor()
- {
- BufferedImage image = readBufferedImage("icons/Computer.gif");
-
- setLayout(new BorderLayout());
-
- JPanel west = new JPanel(new BorderLayout());
- JPanel east = new JPanel(new BorderLayout());
-
- ToolPanel action = new ActionToolbar();
- ToolPanel draw = new DrawToolbar();
- JPanel westPanel = new JPanel(new BorderLayout());
- westPanel.add(BorderLayout.NORTH, action);
- westPanel.add(BorderLayout.SOUTH, draw);
-
- west.add(BorderLayout.NORTH, westPanel);
- add(BorderLayout.WEST, west);
-
- JLabel preview = new JLabel(new ImageIcon(image));
- preview.setPreferredSize(new Dimension(26, 26));
- preview.setBorder(BorderFactory.createEtchedBorder());
-
- ToolPanel palette = new PaletteToolbar();
-
- JPanel eastPanel = new JPanel(new BorderLayout());
- eastPanel.add(BorderLayout.NORTH, preview);
- eastPanel.add(BorderLayout.SOUTH, palette);
-
- east.add(BorderLayout.NORTH, eastPanel);
- add(BorderLayout.EAST, east);
-
- PixelEditor editor = new PixelEditor(image, 16, preview);
- add(BorderLayout.CENTER, new JScrollPane(editor));
-
- palette.addActionListener(editor);
- draw.addActionListener(editor);
- action.addActionListener(editor);
- }
-
- public BufferedImage readBufferedImage(String filename)
- {
- ImageIcon icon = new ImageIcon(filename);
- Image image = icon.getImage();
- BufferedImage buffer = new BufferedImage(
- image.getWidth(null), image.getHeight(null),
- BufferedImage.TYPE_INT_ARGB);
- Graphics g = buffer.getGraphics();
- g.drawImage(image, 0, 0, null);
- return buffer;
- }
- }
-
-
- import java.awt.*;
- import javax.swing.*;
-
- public class JIconEditorTest
- {
- public static void main(String[] args)
- {
- PLAF.setNativeLookAndFeel(true);
-
- JFrame frame = new JFrame("JIconEditor Test");
- frame.getContentPane().add(
- BorderLayout.CENTER, new JIconEditor());
- frame.pack();
- frame.show();
- }
- }
-
-
-
- import java.awt.*;
- import java.awt.image.*;
- import javax.swing.*;
-
- public class PaletteButton extends JToggleButton
- {
- protected Color color;
-
- public PaletteButton(Color color)
- {
- setPreferredSize(new Dimension(22, 22));
- setMaximumSize(new Dimension(22, 22));
- this.color = color;
- BufferedImage image = new BufferedImage(
- 16, 16, BufferedImage.TYPE_INT_RGB);
- Graphics g = image.getGraphics();
- g.setColor(color);
- g.fillRect(0, 0, 16, 16);
- setIcon(new ImageIcon(image));
- setFocusPainted(false);
- setHorizontalAlignment(CENTER);
- setVerticalAlignment(CENTER);
- }
-
- public boolean isFocusTraversable()
- {
- return false;
- }
-
- public boolean isDefaultButton()
- {
- return false;
- }
-
- public Color getColor()
- {
- return color;
- }
- }
-
-
- import java.awt.*;
- import java.awt.event.*;
- import java.util.*;
- import javax.swing.*;
- import javax.swing.border.*;
-
- public class PaletteToolbar extends ToolPanel
- implements ActionListener
- {
- protected Color color;
- protected ArrayList listeners = new ArrayList();
-
- private PaletteButton[] buttons =
- {
- new PaletteButton(Color.red),
- new PaletteButton(Color.cyan),
- new PaletteButton(Color.black),
- new PaletteButton(Color.orange),
- new PaletteButton(Color.green),
- new PaletteButton(Color.magenta),
- new PaletteButton(Color.gray),
- new PaletteButton(Color.pink),
- new PaletteButton(Color.blue),
- new PaletteButton(Color.yellow),
- new PaletteButton(Color.white),
- new PaletteButton(Color.lightGray)
- };
-
- public PaletteToolbar()
- {
- setBorder(new CompoundBorder(
- new EtchedBorder(),
- new EmptyBorder(4, 4, 4, 4)));
- setLayout(new GridLayout(4, 3, 2, 2));
- ButtonGroup group = new ButtonGroup();
- for (int i = 0; i < buttons.length; i++)
- {
- add(buttons[i]);
- group.add(buttons[i]);
- buttons[i].addActionListener(this);
- }
- }
-
- public void actionPerformed(ActionEvent event)
- {
- PaletteButton button = (PaletteButton)event.getSource();
- color = button.getColor();
- fireActionEvent("Select");
- }
-
- public Color getColor()
- {
- return color;
- }
- }
-
-
- import java.awt.*;
- import java.awt.image.*;
- import javax.swing.*;
-
- public class PixelView extends JPanel
- {
- protected int cellSize;
- protected BufferedImage image;
-
- public PixelView(BufferedImage image, int cellSize)
- {
- this.image = image;
- this.cellSize = cellSize;
- }
-
- public Dimension getPreferredSize()
- {
- Insets insets = getInsets();
- int width = image.getWidth();
- int height = image.getHeight();
- return new Dimension(
- insets.left + insets.right + width * cellSize + 1,
- insets.top + insets.bottom + height * cellSize + 1);
- }
-
- public void paintComponent(Graphics g)
- {
- int w = getSize().width;
- int h = getSize().height;
- g.setColor(getBackground());
- g.fillRect(0, 0, w, h);
-
- Insets insets = getInsets();
- int width = image.getWidth();
- int height = image.getHeight();
-
- // Draw grid
- g.setColor(Color.lightGray);
- for (int x = 0; x <= width; x++)
- {
- int offset = insets.left + x * cellSize;
- g.drawLine(offset, insets.top,
- offset, insets.top + height * cellSize);
- }
- for (int y = 0; y <= height; y++)
- {
- int offset = insets.top + y * cellSize;
- g.drawLine(insets.left, offset,
- insets.left + width * cellSize, offset);
- }
- // Draw cells
- for (int x = 0; x < width; x++)
- {
- for (int y = 0; y < height; y++)
- {
- drawCell(g, insets, x, y, image.getRGB(x, y));
- }
- }
- }
-
- protected void drawCell(Graphics g,
- Insets insets, int x, int y, int rgb)
- {
- int alpha = (rgb >> 24) & 0xff;
- if (alpha == 0)
- {
- g.setColor(getBackground());
- g.fillRect(
- insets.left + x * cellSize + 1,
- insets.top + y * cellSize + 1,
- cellSize - 1, cellSize - 1);
- g.setColor(Color.black);
- g.drawLine(
- insets.left + x * cellSize + (cellSize / 2),
- insets.top + y * cellSize + (cellSize / 2),
- insets.left + x * cellSize + (cellSize / 2),
- insets.top + y * cellSize + (cellSize / 2));
- }
- else
- {
- g.setColor(new Color(rgb));
- g.fillRect(
- insets.left + x * cellSize + 1,
- insets.top + y * cellSize + 1,
- cellSize - 1, cellSize - 1);
- }
- }
- }
-
- import javax.swing.*;
-
- public class PLAF
- {
- public static void setNativeLookAndFeel(boolean nativeLAF)
- {
- try
- {
- String plaf;
- if (nativeLAF)
- {
- plaf = UIManager.getSystemLookAndFeelClassName();
- }
- else
- {
- plaf = UIManager.getCrossPlatformLookAndFeelClassName();
- }
- UIManager.setLookAndFeel(plaf);
- }
- catch (Exception e)
- {
- System.out.println("Error loading Look and Feel");
- }
- }
- }
-
-
-
-
- import java.util.*;
- import java.awt.event.*;
- import javax.swing.*;
-
- public class ToolPanel extends JPanel
- {
- protected ArrayList listeners = new ArrayList();
-
- public void addActionListener(ActionListener listener)
- {
- listeners.add(listener);
- }
-
- public void removeActionListener(ActionListener listener)
- {
- listeners.remove(listener);
- }
-
- protected void fireActionEvent(String command)
- {
- ArrayList list = (ArrayList)listeners.clone();
- ActionEvent event = new ActionEvent(
- this, ActionEvent.ACTION_PERFORMED, command);
- for (int i = 0; i < list.size(); i++)
- {
- ActionListener listener = (ActionListener)list.get(i);
- listener.actionPerformed(event);
- }
- }
- }
-
-
-
- import java.awt.*;
- import java.awt.event.*;
- import java.awt.image.*;
- import javax.swing.*;
- import javax.swing.border.*;
-
- public class JIconEditor extends JPanel
- {
- public JIconEditor()
- {
- BufferedImage image = readBufferedImage("icons/Computer.gif");
-
- setLayout(new BorderLayout());
-
- JPanel west = new JPanel(new BorderLayout());
- JPanel east = new JPanel(new BorderLayout());
-
- ToolPanel action = new ActionToolbar();
- ToolPanel draw = new DrawToolbar();
- JPanel westPanel = new JPanel(new BorderLayout());
- westPanel.add(BorderLayout.NORTH, action);
- westPanel.add(BorderLayout.SOUTH, draw);
-
- west.add(BorderLayout.NORTH, westPanel);
- add(BorderLayout.WEST, west);
-
- JLabel preview = new JLabel(new ImageIcon(image));
- preview.setPreferredSize(new Dimension(26, 26));
- preview.setBorder(BorderFactory.createEtchedBorder());
-
- ToolPanel palette = new PaletteToolbar();
-
- JPanel eastPanel = new JPanel(new BorderLayout());
- eastPanel.add(BorderLayout.NORTH, preview);
- eastPanel.add(BorderLayout.SOUTH, palette);
-
- east.add(BorderLayout.NORTH, eastPanel);
- add(BorderLayout.EAST, east);
-
- PixelEditor editor = new PixelEditor(image, 16, preview);
- add(BorderLayout.CENTER, new JScrollPane(editor));
-
- palette.addActionListener(editor);
- draw.addActionListener(editor);
- action.addActionListener(editor);
- }
-
- public BufferedImage readBufferedImage(String filename)
- {
- ImageIcon icon = new ImageIcon(filename);
- Image image = icon.getImage();
- BufferedImage buffer = new BufferedImage(
- image.getWidth(null), image.getHeight(null),
- BufferedImage.TYPE_INT_ARGB);
- Graphics g = buffer.getGraphics();
- g.drawImage(image, 0, 0, null);
- return buffer;
- }
- }
-
-
-