projects
/
synfig.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ignore generated files, such as PNG files.
[synfig.git]
/
synfig-core
/
trunk
/
src
/
synfig
/
color.cpp
diff --git
a/synfig-core/trunk/src/synfig/color.cpp
b/synfig-core/trunk/src/synfig/color.cpp
index
6c4dd5b
..
1dcc314
100644
(file)
--- a/
synfig-core/trunk/src/synfig/color.cpp
+++ b/
synfig-core/trunk/src/synfig/color.cpp
@@
-6,7
+6,7
@@
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
-** Copyright (c) 2007 Chris Moore
+** Copyright (c) 2007
, 2008
Chris Moore
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
@@
-79,9
+79,16
@@
Color::real2hex(ColorReal c)
}
void
}
void
-Color::set_hex(String&
hex
)
+Color::set_hex(String&
str
)
{
value_type r, g, b;
{
value_type r, g, b;
+ String hex;
+
+ // use just the hex characters
+ for (String::const_iterator iter = str.begin(); iter != str.end(); iter++)
+ if (isxdigit(*iter))
+ hex.push_back(*iter);
+
try
{
if (hex.size() == 1)
try
{
if (hex.size() == 1)
@@
-429,7
+436,7
@@
blendfunc_LUMINANCE(Color &a,Color &b,float amount)
static Color
blendfunc_BEHIND(Color &a,Color &b,float amount)
{
static Color
blendfunc_BEHIND(Color &a,Color &b,float amount)
{
- if(a.get_a()==0)a.set_a(COLOR_EPSILON); //!< \hack
+ if(a.get_a()==0)a.set_a(COLOR_EPSILON); //!< \
todo this is a
hack
a.set_a(a.get_a()*amount);
return blendfunc_COMPOSITE(b,a,1.0);
}
a.set_a(a.get_a()*amount);
return blendfunc_COMPOSITE(b,a,1.0);
}
@@
-437,7
+444,9
@@
blendfunc_BEHIND(Color &a,Color &b,float amount)
static Color
blendfunc_ALPHA_BRIGHTEN(Color &a,Color &b,float amount)
{
static Color
blendfunc_ALPHA_BRIGHTEN(Color &a,Color &b,float amount)
{
- if(a.get_a()<b.get_a()*amount)
+ // \todo can this be right, multiplying amount by *b*'s alpha?
+ // compare with blendfunc_BRIGHTEN where it is multiplied by *a*'s
+ if(a.get_a() < b.get_a()*amount)
return a.set_a(a.get_a()*amount);
return b;
}
return a.set_a(a.get_a()*amount);
return b;
}
@@
-445,7
+454,7
@@
blendfunc_ALPHA_BRIGHTEN(Color &a,Color &b,float amount)
static Color
blendfunc_ALPHA_DARKEN(Color &a,Color &b,float amount)
{
static Color
blendfunc_ALPHA_DARKEN(Color &a,Color &b,float amount)
{
- if(a.get_a()*amount
>
b.get_a())
+ if(a.get_a()*amount
>
b.get_a())
return a.set_a(a.get_a()*amount);
return b;
}
return a.set_a(a.get_a()*amount);
return b;
}
@@
-562,27
+571,27
@@
Color::blend(Color a, Color b,float amount, Color::BlendMethod type)
const static blendfunc vtable[BLEND_END]=
{
const static blendfunc vtable[BLEND_END]=
{
- blendfunc_COMPOSITE,
+ blendfunc_COMPOSITE,
// 0
blendfunc_STRAIGHT,
blendfunc_BRIGHTEN,
blendfunc_DARKEN,
blendfunc_ADD,
blendfunc_STRAIGHT,
blendfunc_BRIGHTEN,
blendfunc_DARKEN,
blendfunc_ADD,
- blendfunc_SUBTRACT,
+ blendfunc_SUBTRACT,
// 5
blendfunc_MULTIPLY,
blendfunc_DIVIDE,
blendfunc_COLOR,
blendfunc_HUE,
blendfunc_MULTIPLY,
blendfunc_DIVIDE,
blendfunc_COLOR,
blendfunc_HUE,
- blendfunc_SATURATION,
+ blendfunc_SATURATION,
// 10
blendfunc_LUMINANCE,
blendfunc_BEHIND,
blendfunc_ONTO,
blendfunc_ALPHA_BRIGHTEN,
blendfunc_LUMINANCE,
blendfunc_BEHIND,
blendfunc_ONTO,
blendfunc_ALPHA_BRIGHTEN,
- blendfunc_ALPHA_DARKEN,
+ blendfunc_ALPHA_DARKEN,
// 15
blendfunc_SCREEN,
blendfunc_HARD_LIGHT,
blendfunc_DIFFERENCE,
blendfunc_ALPHA_OVER,
blendfunc_SCREEN,
blendfunc_HARD_LIGHT,
blendfunc_DIFFERENCE,
blendfunc_ALPHA_OVER,
- blendfunc_OVERLAY,
+ blendfunc_OVERLAY,
// 20
blendfunc_STRAIGHT_ONTO,
};
blendfunc_STRAIGHT_ONTO,
};