1 6 7 package com.thoughtriver.open.vectorvisuals; 8 9 import java.awt.*; 10 import java.util.*; 11 import java.util.List ; 12 13 26 public class VisualObjectManager { 27 28 29 private LayerComparator layerComparator = null; 30 31 35 private List <VisualObject> objects = null; 36 37 40 public VisualObjectManager() { 41 layerComparator = new LayerComparator(); 42 objects = new LinkedList<VisualObject>(); 43 } 44 45 51 public void addObject(final VisualObject vo) { 52 objects.add(vo); 53 Collections.sort(objects, layerComparator); 54 } 55 56 62 public void removeObject(final VisualObject vo) { 63 objects.remove(vo); 64 } 65 66 86 public void renderNegativeLayers(final Graphics2D g) { 87 88 for (VisualObject obj : objects) { 90 obj.prepare(); 91 } 92 93 for (VisualObject obj : objects) { 95 Graphics2D g2 = null; 96 97 if (obj.getLayer() < 0) { 99 g2 = (Graphics2D) g.create(); 100 if (obj.getParent() != null) { 101 g2.setClip(obj.getParent().getShape()); 102 } 103 else { 104 g2.setClip(obj.getShape()); 105 } 106 } 107 else { 108 continue; 110 } 111 112 Rectangle clip = g2.getClipBounds(); 114 Rectangle bounds = obj.getTransform().createTransformedShape(obj.getShape()).getBounds(); 115 if (!clip.createIntersection(bounds).isEmpty()) { 116 obj.render(g2); 117 } 118 119 } 120 121 } 122 123 140 public void renderNonNegativeLayers(final Graphics2D g) { 141 142 for (VisualObject obj : objects) { 144 145 if (obj.getLayer() >= 0) { 147 obj.render(g); 148 } 149 } 150 151 } 152 153 162 public List <VisualObject> getAllObjects() { 163 List <VisualObject> objList = new LinkedList<VisualObject>(objects); 164 Collections.reverse(objList); 165 return objList; 166 } 167 168 172 private class LayerComparator implements Comparator<VisualObject> { 173 174 175 public LayerComparator() { 176 } 177 178 188 public int compare(final VisualObject obj1, final VisualObject obj2) { 189 return obj1.getLayer() - obj2.getLayer(); 190 } 191 192 } 193 194 } 195 | Popular Tags |