1:
37:
38: package ;
39:
40: import ;
41:
42: public class JPEGScan
43: {
44: private int maxHeight = 0, maxWidth = 0, maxV = 0, maxH = 0;
45: private int numOfComponents = 0, numOfComponentBlocks = 0;
46: private ArrayList components = new ArrayList();
47:
48: public JPEGScan()
49: {
50:
51: }
52:
53: public JPEGScan(int h, int w)
54: {
55: maxHeight=h;
56: maxWidth=w;
57: }
58:
59: private void recalculateDimensions()
60: {
61: JPEGComponent comp;
62:
63:
64:
65: for(int i=0; i < components.size() ; i++)
66: {
67: comp = (JPEGComponent)components.get(i);
68: if(comp.factorH > maxH)
69: maxH=comp.factorH;
70: if(comp.factorV > maxV)
71: maxV=comp.factorV;
72: }
73:
74: for(int i=0; i < components.size() ; i++)
75: {
76: comp = (JPEGComponent)components.get(i);
77: comp.maxH = maxH;
78: comp.maxV = maxV;
79: }
80:
81: }
82:
83: public void addComponent(byte id, byte factorHorizontal, byte factorVertical,
84: byte quantizationID)
85: {
86: JPEGComponent component = new JPEGComponent(id, factorHorizontal, factorVertical, quantizationID);
87: components.add((Object)component);
88: recalculateDimensions();
89: numOfComponents++;
90: numOfComponentBlocks += factorHorizontal*factorVertical;
91: }
92:
93: public JPEGComponent getComponentByID(byte id)
94: {
95: JPEGComponent comp = (JPEGComponent)components.get(0);
96: for(int i=0; i < components.size() ; i++)
97: {
98: comp=(JPEGComponent)components.get(i);
99: if(comp.component_id==id)
100: break;
101: }
102: return(comp);
103: }
104:
105: public JPEGComponent get(int id)
106: {
107: return((JPEGComponent)components.get(id));
108: }
109:
110: public int getX(byte id)
111: {
112: JPEGComponent comp = getComponentByID(id);
113: return(comp.width);
114: }
115:
116: public int getY(byte id)
117: {
118: JPEGComponent comp = getComponentByID(id);
119: return(comp.height);
120: }
121:
122: public int getMaxV()
123: {
124: return(maxV);
125: }
126:
127: public int getMaxH()
128: {
129: return(maxH);
130: }
131:
132: public void setWidth(int w)
133: {
134: maxWidth=w;
135: }
136:
137: public void setHeight(int h)
138: {
139: maxHeight=h;
140: }
141:
142: public int size()
143: {
144: return(numOfComponents);
145: }
146:
147: public int sizeComponentBlocks()
148: {
149: return(numOfComponentBlocks);
150: }
151: }