001 package com.croftsoft.core.animation.collector; 002 003 import java.awt.Rectangle; 004 005 import com.croftsoft.core.animation.RepaintCollector; 006 import com.croftsoft.core.util.ArrayLib; 007 008 /********************************************************************* 009 * Simply collects the repaint requests. 010 * 011 * @version 012 * 2002-12-01 013 * @since 014 * 2002-12-01 015 * @author 016 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 017 *********************************************************************/ 018 019 public class SimpleRepaintCollector 020 implements RepaintCollector 021 ////////////////////////////////////////////////////////////////////// 022 ////////////////////////////////////////////////////////////////////// 023 { 024 025 private int count; 026 027 private Rectangle [ ] repaintRegions; 028 029 ////////////////////////////////////////////////////////////////////// 030 // constructor methods 031 ////////////////////////////////////////////////////////////////////// 032 033 public SimpleRepaintCollector ( ) 034 ////////////////////////////////////////////////////////////////////// 035 { 036 repaintRegions = new Rectangle [ 0 ]; 037 } 038 039 ////////////////////////////////////////////////////////////////////// 040 // accessor methods 041 ////////////////////////////////////////////////////////////////////// 042 043 public int getCount ( ) { return count; } 044 045 public Rectangle [ ] getRepaintRegions ( ) 046 ////////////////////////////////////////////////////////////////////// 047 { 048 return repaintRegions; 049 } 050 051 ////////////////////////////////////////////////////////////////////// 052 // mutator methods 053 ////////////////////////////////////////////////////////////////////// 054 055 public void repaint ( 056 int x, 057 int y, 058 int width, 059 int height ) 060 ////////////////////////////////////////////////////////////////////// 061 { 062 if ( count == repaintRegions.length ) 063 { 064 repaintRegions = ( Rectangle [ ] ) ArrayLib.append ( 065 repaintRegions, new Rectangle ( x, y, width, height ) ); 066 } 067 else 068 { 069 repaintRegions [ count ].setBounds ( x, y, width, height ); 070 } 071 072 count++; 073 } 074 075 public void repaint ( ) 076 ////////////////////////////////////////////////////////////////////// 077 { 078 repaint ( 0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE ); 079 } 080 081 public void reset ( ) 082 ////////////////////////////////////////////////////////////////////// 083 { 084 count = 0; 085 } 086 087 ////////////////////////////////////////////////////////////////////// 088 ////////////////////////////////////////////////////////////////////// 089 }