Gridarta Editor
ColourFilter.java
Go to the documentation of this file.
1
/*
2
* Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3
* Copyright (C) 2000-2015 The Gridarta Developers.
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 2 of the License, or
8
* (at your option) any later version.
9
*
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License along
16
* with this program; if not, write to the Free Software Foundation, Inc.,
17
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
*/
19
20
package
net.sf.gridarta.model.face;
21
22
import
java.awt.image.RGBImageFilter;
23
import
org.jetbrains.annotations.NotNull;
24
29
public
class
ColourFilter
extends
RGBImageFilter {
30
34
public
static
final
int
RED_MASK
= 0x00FF0000;
35
39
public
static
final
int
GREEN_MASK
= 0x0000FF00;
40
44
public
static
final
int
BLUE_MASK
= 0x000000FF;
45
49
public
static
final
int
RED_GREEN_BLUE_MASK
=
RED_MASK
|
GREEN_MASK
|
BLUE_MASK
;
50
54
private
static
final
int
ALPHA_MASK
= 0xFF000000;
55
59
private
static
final
int
RED_SHIFT
= 16;
60
64
private
static
final
int
GREEN_SHIFT
= 8;
65
69
private
static
final
int
BLUE_SHIFT
= 0;
70
74
private
final
int
positiveMask
;
75
79
private
final
int
negativeMask
;
80
85
public
ColourFilter
(
final
int
mask) {
86
positiveMask
= mask &
RED_GREEN_BLUE_MASK
;
87
negativeMask
= ~mask &
RED_GREEN_BLUE_MASK
;
88
}
89
93
@Override
94
public
int
filterRGB
(
final
int
x,
final
int
y,
final
int
rgb) {
95
//noinspection TooBroadScope
96
final
int
alpha = rgb &
ALPHA_MASK
;
97
final
float
r = rgb >>
RED_SHIFT
& 0xFF;
98
final
float
g = rgb >>
GREEN_SHIFT
& 0xFF;
99
final
float
b = rgb >>
BLUE_SHIFT
& 0xFF;
100
int
gray1 = (int) (0.66F * r + 0.66F * g + 0.66F * b);
101
int
gray2 = gray1 - 256;
102
if
(gray1 < 0) {
103
gray1 = 0;
104
}
105
if
(gray1 > 255) {
106
gray1 = 255;
107
}
108
if
(gray2 < 0) {
109
gray2 = 0;
110
}
111
if
(gray2 > 255) {
112
gray2 = 255;
113
}
114
gray1 = gray1 <<
BLUE_SHIFT
| gray1 <<
GREEN_SHIFT
| gray1 <<
RED_SHIFT
;
115
gray2 = gray2 <<
BLUE_SHIFT
| gray2 <<
GREEN_SHIFT
| gray2 <<
RED_SHIFT
;
116
117
return
alpha | gray1 &
positiveMask
| gray2 &
negativeMask
;
118
}
119
120
@NotNull
121
@Override
122
public
ColourFilter
clone
() {
123
return
(
ColourFilter
) super.
clone
();
124
}
125
126
}
net.sf.gridarta.model.face.ColourFilter
Definition:
ColourFilter.java:29
net.sf.gridarta.model.face.ColourFilter.positiveMask
final int positiveMask
Definition:
ColourFilter.java:74
net.sf.gridarta.model.face.ColourFilter.BLUE_MASK
static final int BLUE_MASK
Definition:
ColourFilter.java:44
net.sf.gridarta.model.face.ColourFilter.RED_MASK
static final int RED_MASK
Definition:
ColourFilter.java:34
net.sf.gridarta.model.face.ColourFilter.RED_SHIFT
static final int RED_SHIFT
Definition:
ColourFilter.java:59
net.sf.gridarta.model.face.ColourFilter.GREEN_MASK
static final int GREEN_MASK
Definition:
ColourFilter.java:39
net.sf.gridarta.model.face.ColourFilter.ColourFilter
ColourFilter(final int mask)
Definition:
ColourFilter.java:85
net.sf.gridarta.model.face.ColourFilter.negativeMask
final int negativeMask
Definition:
ColourFilter.java:79
net.sf.gridarta.model.face.ColourFilter.RED_GREEN_BLUE_MASK
static final int RED_GREEN_BLUE_MASK
Definition:
ColourFilter.java:49
net.sf.gridarta.model.face.ColourFilter.filterRGB
int filterRGB(final int x, final int y, final int rgb)
Definition:
ColourFilter.java:94
net.sf.gridarta.model.face.ColourFilter.BLUE_SHIFT
static final int BLUE_SHIFT
Definition:
ColourFilter.java:69
net.sf.gridarta.model.face.ColourFilter.ALPHA_MASK
static final int ALPHA_MASK
Definition:
ColourFilter.java:54
net.sf.gridarta.model.face.ColourFilter.GREEN_SHIFT
static final int GREEN_SHIFT
Definition:
ColourFilter.java:64
net.sf.gridarta.model.face.ColourFilter.clone
ColourFilter clone()
Definition:
ColourFilter.java:122
src
model
src
main
java
net
sf
gridarta
model
face
ColourFilter.java
Generated by
1.8.17