File: rgbhandle.cpp

package info (click to toggle)
rafkill 1.2.2-3.3
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 13,268 kB
  • sloc: cpp: 13,508; makefile: 64; sh: 14
file content (67 lines) | stat: -rw-r--r-- 1,375 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "rgbhandle.h"
#include "defs.h"

RGBHandle::RGBHandle() {
	rwant = Util::rnd( 255 );
	gwant = Util::rnd( 255 );
	bwant = Util::rnd( 255 );

	mine.r = rwant;
	mine.g = gwant;
	mine.b = bwant;

}


void RGBHandle::update( int max, int min ) {

	unsigned char * want[ 3 ];
	want[0] = &rwant;
	want[1] = &gwant;
	want[2] = &bwant;

	if ( changecol( mine.r, rwant ) ) {
		if ( Util::rnd( RGB_GO_BLACK ) == Util::rnd( RGB_GO_BLACK ) )
			rwant = 0;
		else    rwant = Util::rnd(max-min)+min;
	}

	if ( changecol( mine.g, gwant ) ) {
		if ( Util::rnd( RGB_GO_BLACK ) == Util::rnd( RGB_GO_BLACK ) )
			gwant = 0;
		else    gwant = Util::rnd(max-min)+min;
	}

	if ( changecol( mine.b, bwant ) ) {
		if ( Util::rnd( RGB_GO_BLACK ) == Util::rnd( RGB_GO_BLACK ) )
			bwant = 0;
		else    bwant = Util::rnd(max-min)+min;
	}

	bool cy = false;
	for ( int q = 0; q < 3; q++ )
		cy = cy || (*(want[q]) >= min && *(want[q]) <= max);
	if ( !cy ) *(want[Util::rnd(3)]) = Util::rnd(max-min)+min;
	cy = true;
	for ( int q = 0; q < 3; q++ )
		cy = cy && *(want[q]) == 0;
	if ( cy ) *(want[Util::rnd(3)]) = Util::rnd(max-min)+min;

}


int RGBHandle::Get( ) {
	return Bitmap::makeColor( mine.r, mine.g, mine.b );
}


bool RGBHandle::changecol( unsigned char & c, unsigned char & dir ) {

	for ( int q = 0; q < 2; q++ ) {
		if ( c > dir ) c--;
		if ( c < dir ) c++;
	}

	return c == dir;

}