mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 14:16:09 -06:00
.TCore: fixed clashes of 'global member' functions accross files
*plugin/png: bug fix - wrong interpretation of transparency information (png_get_tRNS) git-svn-id: svn://ultimatepp.org/upp/trunk@3276 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
bdf518a893
commit
affc79af60
3 changed files with 46 additions and 48 deletions
|
|
@ -552,7 +552,7 @@ void CalcSymbols::Remove(String name)
|
|||
|
||||
CalcContext::Global::Global(const String& name, CalcProc proc)
|
||||
{
|
||||
GetGlobals().Add(name, proc);
|
||||
GetGlobals().Add(name, proc);
|
||||
}
|
||||
|
||||
CalcContext::CalcContext()
|
||||
|
|
@ -579,20 +579,20 @@ Value CalcContext::Get(String name) const
|
|||
return Value();
|
||||
}
|
||||
|
||||
Value CalcContext::TryEvaluate(String expr)
|
||||
{
|
||||
try {
|
||||
return Evaluate(expr);
|
||||
}
|
||||
catch(Exc e) {
|
||||
return ErrorValue(e);
|
||||
}
|
||||
}
|
||||
|
||||
Value CalcContext::Evaluate(String expr)
|
||||
{
|
||||
CalcNodePtr node = CalcParser().ScanVoid(expr);
|
||||
return !!node ? node->Calc(*this) : Value();
|
||||
CalcParser parser;
|
||||
try
|
||||
{
|
||||
CalcNodePtr cn = parser.ScanVoid(expr);
|
||||
if(!cn)
|
||||
return Value();
|
||||
return cn->Calc(*this);
|
||||
}
|
||||
catch(Exc e)
|
||||
{
|
||||
return ErrorValue(e);
|
||||
}
|
||||
}
|
||||
|
||||
double CalcContext::EvaluateDouble(String expr)
|
||||
|
|
@ -1289,7 +1289,7 @@ String CalcParser::GetSqlString()
|
|||
else if(*pos)
|
||||
out.Cat(*pos++);
|
||||
else
|
||||
throw Exc(t_("Unterminated string constant"));
|
||||
throw Exc(t_("Unterminated string constant"));
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
|
@ -1424,7 +1424,7 @@ CalcNodePtr CalcParser::ScanCompare()
|
|||
out_node = new CalcConstNode(Value());
|
||||
}
|
||||
else if(islike) {
|
||||
CalcNodePtr lexpr = ScanBitOr();
|
||||
CalcNodePtr lexpr = ScanSelect();
|
||||
out_node = new CalcFunctionNode("like", node, lexpr);
|
||||
}
|
||||
else if(isis) {
|
||||
|
|
@ -1435,7 +1435,7 @@ CalcNodePtr CalcParser::ScanCompare()
|
|||
throw Exc(t_("expected 'between', 'in' or 'like'"));
|
||||
else
|
||||
return node;
|
||||
|
||||
|
||||
if(!isnot)
|
||||
return out_node;
|
||||
return new CalcFunctionNode("!", out_node);
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ class CalcSequenceNode : public CalcNode {
|
|||
public:
|
||||
CalcSequenceNode(pick_ Vector<CalcNodePtr> nodes);
|
||||
CalcSequenceNode(CalcNodePtr node1, CalcNodePtr node2);
|
||||
|
||||
|
||||
virtual CalcNodePtr Clone() const { return new CalcSequenceNode(*this); }
|
||||
virtual Value Calc(CalcContext& context) const;
|
||||
virtual String Format() const;
|
||||
|
|
@ -343,8 +343,6 @@ public:
|
|||
virtual ~CalcContext();
|
||||
|
||||
Value Evaluate(String expr);
|
||||
Value TryEvaluate(String expr);
|
||||
|
||||
double EvaluateDouble(String expr);
|
||||
String EvaluateString(String expr);
|
||||
int EvaluateInt(String expr);
|
||||
|
|
@ -641,6 +639,8 @@ CalcCastMemberTemplate(CalcCastMemberPacket, 6)
|
|||
#define FGENID1(tag, lnum) FGENID2(tag, lnum)
|
||||
#define FGENID(a, b) COMBINE(COMBINE(a, b), __LINE__)
|
||||
|
||||
#define SUBEXPAND(M) M
|
||||
|
||||
#ifndef NOHELP
|
||||
#define FDECLTH(tag, topic, id, group, proc) \
|
||||
static GLOBAL_VARP(HelpCalc, FGENID(chlp, tag), (callback(proc), id, "Calc$" topic, group, ASSTRING(proc))); \
|
||||
|
|
@ -682,32 +682,32 @@ FDECLTH(dflt, topic, id, group, gate)
|
|||
#define FDECLAP0(id, x, group) FDECLTA(BTA1, id, "C" ASSTRING(id) ASSTRING(x), ASSTRING(id), group, COMBINE3(C, id, x))
|
||||
|
||||
#define MDECLT(null, topic, id, group, call) \
|
||||
struct FGENID(clcp, dflt) : public BASECLASS \
|
||||
{ FGENID(clcp, dflt)(); bool CalcIt(CalcPacket& packet) { return CalcCastMember<null>(packet, this, &BASECLASS::call); } }; \
|
||||
static GLOBAL_VARP(HelpCalc, FGENID(chlp, dflt), (callback(static_cast<BASECLASS *>(0), \
|
||||
brutal_cast<bool (BASECLASS::*)(CalcPacket&)>(&FGENID(clcp, dflt)::CalcIt)), \
|
||||
struct FGENID(clcp, SUBEXPAND(MFILEID)) : public BASECLASS \
|
||||
{ FGENID(clcp, SUBEXPAND(MFILEID))(); bool CalcIt(CalcPacket& packet) { return CalcCastMember<null>(packet, this, &BASECLASS::call); } }; \
|
||||
static GLOBAL_VARP(HelpCalc, FGENID(chlp, SUBEXPAND(MFILEID)), (callback(static_cast<BASECLASS *>(0), \
|
||||
brutal_cast<bool (BASECLASS::*)(CalcPacket&)>(&FGENID(clcp, SUBEXPAND(MFILEID))::CalcIt)), \
|
||||
id, "Calc$" topic, group, ASSTRING(call))); \
|
||||
INITBLOCK_(FGENID(mblk, tag)) { \
|
||||
FGENID(chlp, dflt)(); \
|
||||
static CalcLocalItem<BASECLASS> FGENID(clci, dflt)(BASECLASS::GetLocalMap(), id, \
|
||||
brutal_cast<bool (BASECLASS::*)(CalcPacket&)>(&FGENID(clcp, dflt)::CalcIt)); \
|
||||
FGENID(chlp, SUBEXPAND(MFILEID))(); \
|
||||
static CalcLocalItem<BASECLASS> FGENID(clci, SUBEXPAND(MFILEID))(BASECLASS::GetLocalMap(), id, \
|
||||
brutal_cast<bool (BASECLASS::*)(CalcPacket&)>(&FGENID(clcp, SUBEXPAND(MFILEID))::CalcIt)); \
|
||||
} \
|
||||
static void FGENID(chlt, dflt)(String& out) { out.Cat(FGENID(chlp, dflt)().GetTitle()); } \
|
||||
RegisterHelpTopicInfo("Calc$" topic, __FILE__, callback(&FGENID(chlt, dflt)), CNULL)
|
||||
static void FGENID(chlt, SUBEXPAND(MFILEID))(String& out) { out.Cat(FGENID(chlp, SUBEXPAND(MFILEID))().GetTitle()); } \
|
||||
RegisterHelpTopicInfo("Calc$" topic, __FILE__, callback(&FGENID(chlt, SUBEXPAND(MFILEID))), CNULL)
|
||||
|
||||
#define MDECLTA(null, topic, id, group, call) \
|
||||
struct FGENID(clcp, dflt) : public BASECLASS \
|
||||
{ FGENID(clcp, dflt)(); bool CalcIt(CalcPacket& packet) { return CalcCastMemberPacket<null>(packet, this, &BASECLASS::call); } }; \
|
||||
static GLOBAL_VARP(HelpCalc, FGENID(chlp, dflt), (callback(static_cast<BASECLASS *>(0), \
|
||||
brutal_cast<bool (BASECLASS::*)(CalcPacket&)>(&FGENID(clcp, dflt)::CalcIt)), \
|
||||
struct FGENID(clcp, SUBEXPAND(MFILEID)) : public BASECLASS \
|
||||
{ FGENID(clcp, SUBEXPAND(MFILEID))(); bool CalcIt(CalcPacket& packet) { return CalcCastMemberPacket<null>(packet, this, &BASECLASS::call); } }; \
|
||||
static GLOBAL_VARP(HelpCalc, FGENID(chlp, SUBEXPAND(MFILEID)), (callback(static_cast<BASECLASS *>(0), \
|
||||
brutal_cast<bool (BASECLASS::*)(CalcPacket&)>(&FGENID(clcp, SUBEXPAND(MFILEID))::CalcIt)), \
|
||||
id, "Calc$" topic, group, ASSTRING(call))); \
|
||||
INITBLOCK_(FGENID(mblk, tag)) { \
|
||||
FGENID(chlp, dflt)(); \
|
||||
static CalcLocalItem<BASECLASS> FGENID(clci, dflt)(BASECLASS::GetLocalMap(), id, \
|
||||
brutal_cast<bool (BASECLASS::*)(CalcPacket&)>(&FGENID(clcp, dflt)::CalcIt)); \
|
||||
FGENID(chlp, SUBEXPAND(MFILEID))(); \
|
||||
static CalcLocalItem<BASECLASS> FGENID(clci, SUBEXPAND(MFILEID))(BASECLASS::GetLocalMap(), id, \
|
||||
brutal_cast<bool (BASECLASS::*)(CalcPacket&)>(&FGENID(clcp, SUBEXPAND(MFILEID))::CalcIt)); \
|
||||
} \
|
||||
static void FGENID(chlt, dflt)(String& out) { out.Cat(FGENID(chlp, dflt)().GetTitle()); } \
|
||||
RegisterHelpTopicInfo("Calc$" topic, __FILE__, callback(&FGENID(chlt, dflt)), CNULL)
|
||||
static void FGENID(chlt, SUBEXPAND(MFILEID))(String& out) { out.Cat(FGENID(chlp, SUBEXPAND(MFILEID))().GetTitle()); } \
|
||||
RegisterHelpTopicInfo("Calc$" topic, __FILE__, callback(&FGENID(chlt, SUBEXPAND(MFILEID))), CNULL)
|
||||
|
||||
#define MDECL(id, x, group) MDECLT(BTA0, ASSTRING(call), id, group, call)
|
||||
#define MDECL0(id, x, group) MDECLT(BTA1, ASSTRING(id), id, group, COMBINE3(C, id, x))
|
||||
|
|
|
|||
|
|
@ -176,11 +176,11 @@ bool PNGRaster::Create()
|
|||
}
|
||||
}
|
||||
|
||||
png_bytep trans_colors = 0;
|
||||
png_bytep trans_alpha = 0;
|
||||
png_color_16p trans_values = 0;
|
||||
int num_trans = 0;
|
||||
|
||||
png_get_tRNS(data->png_ptr, data->info_ptr, &trans_colors, &num_trans, &trans_values);
|
||||
png_get_tRNS(data->png_ptr, data->info_ptr, &trans_alpha, &num_trans, &trans_values);
|
||||
// bool has_mask = (num_trans > 0);
|
||||
|
||||
// AlphaArray im(width, height, out_bpp, 4, NULL, Vector<Color>(), has_mask ? 8 : 0, 4);
|
||||
|
|
@ -201,13 +201,13 @@ bool PNGRaster::Create()
|
|||
rgba.g = c.green;
|
||||
rgba.b = c.blue;
|
||||
rgba.a = 255;
|
||||
if(trans_alpha && i < num_trans)
|
||||
rgba.a = trans_alpha[i];
|
||||
data->palette[i] = rgba;
|
||||
}
|
||||
if(trans_colors) {
|
||||
Premultiply(data->palette, data->palette, pal_count);
|
||||
if(trans_alpha)
|
||||
data->info.kind = IMAGE_MASK;
|
||||
for(int i = 0; i < num_trans; i++)
|
||||
data->palette[(int)trans_colors[i]] = RGBAZero();
|
||||
}
|
||||
|
||||
}
|
||||
else if(!(color_type & PNG_COLOR_MASK_COLOR)) { // grayscale
|
||||
|
|
@ -217,13 +217,11 @@ bool PNGRaster::Create()
|
|||
RGBA rgba;
|
||||
rgba.r = rgba.g = rgba.b = (byte)level;
|
||||
rgba.a = 255;
|
||||
if(trans_alpha && i < num_trans)
|
||||
rgba.a = trans_alpha[i];
|
||||
data->palette[i] = rgba;
|
||||
}
|
||||
if(trans_colors) {
|
||||
data->info.kind = IMAGE_MASK;
|
||||
for(int i = 0; i < num_trans; i++)
|
||||
data->palette[(int)trans_colors[i]] = RGBAZero();
|
||||
}
|
||||
Premultiply(data->palette, data->palette, colors);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue