1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * This file is part of OpenOffice.org.
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org. If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
26 ************************************************************************/
31 // -----------------------------------------------------------------------------
32 abstract class CountPixel
34 protected int m_nCount
= 0;
35 public int getCount() {return m_nCount
;}
36 public abstract void count(int _nRGB
);
39 // -----------------------------------------------------------------------------
40 class CountNotWhite
extends CountPixel
42 public CountNotWhite()
44 // System.out.println("CountWhite()");
47 public void countold(final int pixel
)
49 // final int alpha = (pixel >> 24) & 0xff;
50 final int red
= (pixel
>> 16) & 0xff;
51 final int green
= (pixel
>> 8) & 0xff;
52 final int blue
= (pixel
) & 0xff;
54 // System.out.println(String.valueOf(red) + ":" + String.valueOf(green) + ":" + String.valueOf(blue));
55 if (red
== 0xff && green
== 0xff && blue
== 0xff)
61 public void count(final int pixel
)
63 // final int alpha = (pixel >> 24) & 0xff;
64 final int blue
= (pixel
) & 0xff;
70 final int green
= (pixel
>> 8) & 0xff;
76 final int red
= (pixel
>> 16) & 0xff;
85 // -----------------------------------------------------------------------------
86 class CountNotBlack
extends CountPixel
88 public CountNotBlack()
90 // System.out.println("CountBlack()");
93 public void countold(final int pixel
)
95 // final int alpha = (pixel >> 24) & 0xff;
96 final int red
= (pixel
>> 16) & 0xff;
97 final int green
= (pixel
>> 8) & 0xff;
98 final int blue
= (pixel
) & 0xff;
100 if (red
== 0x00 && green
== 0x00 && blue
== 0x00)
106 public void count(final int pixel
)
108 // final int alpha = (pixel >> 24) & 0xff;
109 final int blue
= (pixel
) & 0xff;
115 final int green
= (pixel
>> 8) & 0xff;
121 final int red
= (pixel
>> 16) & 0xff;
130 // -----------------------------------------------------------------------------
133 // public int stuff()
136 // int rgba = 0; // ...; // comes from PixelGrabber, BufferedImage.getRGB etc.
137 // int red = (rgba >> 16) & 0xff;
138 // int green = (rgba >> 8) & 0xff;
139 // int blue = rgba & 0xff;
140 // int alpha = (rgba >> 24) & 0xff;
141 //// (2) now modify red, green, blue and alpha as you like;
142 //// make sure that each of the four values stays in the
143 //// interval 0 to 255
145 //// (3) and encode back to an int, e.g. to give it to MemoryImageSource or
146 //// BufferedImage.setRGB
147 // rgba = (alpha << 24) | (red << 16) | (green << 8) | blue;
151 // public static void handlesinglepixel(int x, int y, int pixel)
153 // int alpha = (pixel >> 24) & 0xff;
154 // int red = (pixel >> 16) & 0xff;
155 // int green = (pixel >> 8) & 0xff;
156 // int blue = (pixel ) & 0xff;
157 // // Deal with the pixel as necessary...
160 public static void countPixel(ImageHelper img
, int _x
, int _y
, int _w
, int _h
, CountPixel _aPixelCounter
)
162 for (int y
= 0; y
< _h
; y
++) {
163 for (int x
= 0; x
< _w
; x
++) {
164 // handlesinglepixel(x+i, y+j, pixels[j * w + i]);
165 _aPixelCounter
.count(img
.getPixel(x
,y
));
169 public static int countNotWhitePixel(ImageHelper _aImage
)
171 final int w
= _aImage
.getWidth();
172 final int h
= _aImage
.getHeight();
174 CountPixel aCountNotWhite
= new CountNotWhite();
175 countPixel(_aImage
, 0, 0, w
, h
, aCountNotWhite
);
176 return aCountNotWhite
.getCount();
179 public static int countNotBlackPixel(ImageHelper _aImage
)
181 final int w
= _aImage
.getWidth();
182 final int h
= _aImage
.getHeight();
184 CountPixel aCountNotBlack
= new CountNotBlack();
185 countPixel(_aImage
, 0, 0, w
, h
, aCountNotBlack
);
186 return aCountNotBlack
.getCount();
190 // -----------------------------------------------------------------------------
192 public class PixelCounter
{
193 // private Image m_aImage;
194 // ImageHelper m_aImage;
197 public int countNotWhitePixel(String _sFile
)
198 throws java
.io
.IOException
200 ImageHelper aImage
= ImageHelper
.createImageHelper(_sFile
);
201 final int nw
= graphics_stuff
.countNotWhitePixel(aImage
);
205 public int countNotBlackPixel(String _sFile
)
206 throws java
.io
.IOException
208 ImageHelper aImage
= ImageHelper
.createImageHelper(_sFile
);
209 final int nw
= graphics_stuff
.countNotBlackPixel(aImage
);
213 public static int countNotWhitePixelsFromImage(String _sFile
)
214 throws java
.io
.IOException
216 PixelCounter a
= new PixelCounter();
217 return a
.countNotWhitePixel(_sFile
);
220 public static int countNotBlackPixelsFromImage(String _sFile
)
221 throws java
.io
.IOException
223 PixelCounter a
= new PixelCounter();
224 return a
.countNotBlackPixel(_sFile
);
227 // -----------------------------------------------------------------------------
229 // public static void main(String[] args) {
231 // String a = helper.StringHelper.createValueString(10, 4);
234 // BorderRemover a = new BorderRemover();
237 // a.createNewImageWithoutBorder(args[0], args[1]);
239 // catch(java.io.IOException e)
241 // System.out.println("Exception caught.");