Beispiel #1
0
 /**
  * Copy dirty layer references to array for further painting. The copying is needed to not keep
  * lock on layers list when layers painting will happen. Dirty states of the layers are cleaned
  * after the copying. Layers painting can change layers state again, but it will be served on next
  * repaint only.
  */
 private void copyAndCleanDirtyLayers() {
   if (CGraphicsQ.DEBUG) {
     System.err.println("[Copy dirty layers]");
   }
   CLayer l;
   dirtyCount = 0;
   int layersCount = layers.size();
   // Heuristics to increase array for copied dirty layers
   if (layersCount > dirtyMaxCount) {
     dirtyMaxCount += layersCount;
     dirtyLayers = new CLayer[dirtyMaxCount];
   }
   // Copy dirty layer references and reset dirty layer states
   for (CLayerElement le = layers.getBottom(); le != null; le = le.getUpper()) {
     l = le.getLayer();
     if (l.visible && l.isDirty()) {
       l.copyAndCleanDirtyState();
       dirtyLayers[dirtyCount++] = l;
     } else { // !(visible && dirty)
       if (CGraphicsQ.DEBUG) {
         System.err.println("Skip Layer: " + l);
       }
     } // if
   } // for
 }