mirror of https://github.com/odrling/Aegisub
commit nekodar's style parser fix
Originally committed to SVN as r1435.
This commit is contained in:
parent
a078676cf7
commit
2134cb4ba8
|
@ -38,7 +38,7 @@
|
||||||
#include <wx/tokenzr.h>
|
#include <wx/tokenzr.h>
|
||||||
#include "ass_style.h"
|
#include "ass_style.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
///////////////////////// AssColor //////////////////////////
|
///////////////////////// AssColor //////////////////////////
|
||||||
////////////////
|
////////////////
|
||||||
|
@ -59,26 +59,20 @@ void AssColor::Parse(const wxString value) {
|
||||||
char c,ostr[12];
|
char c,ostr[12];
|
||||||
unsigned long outval;
|
unsigned long outval;
|
||||||
int oindex=11;
|
int oindex=11;
|
||||||
bool ishex=false,isneg=false;
|
bool ishex=false;
|
||||||
|
|
||||||
ostr[11]=0;
|
ostr[11]=0;
|
||||||
|
|
||||||
for(int i=value.Len()-1;i>=0&&oindex>=0;i--) {
|
for(int i=value.Len()-1;i>=0&&oindex>=0;i--) {
|
||||||
c=value[i];
|
c=value[i];
|
||||||
if ((c >= 48 && c <= 57) || (c >= 65 && c <= 70) || (c >= 97 && c <= 102)) {
|
if (isxdigit(c) || c=='-') {
|
||||||
ostr[--oindex] = c;
|
ostr[--oindex] = c;
|
||||||
if (c>=65) ishex = true;
|
if (c>='A') ishex = true;
|
||||||
}
|
}
|
||||||
else if (c == 'H' || c == 'h') ishex = true;
|
else if (c == 'H' || c == 'h') ishex = true;
|
||||||
else if (c==45) isneg=true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
outval=strtoul(ostr+oindex,0,ishex?16:10);
|
outval=strtoul(ostr+oindex,0,ishex?16:10);
|
||||||
if (isneg) {
|
|
||||||
// Two lines to stop g++ from bitching
|
|
||||||
outval+=2147483647; //2^31 (MSB)
|
|
||||||
outval++;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = outval & 0xFF;
|
r = outval & 0xFF;
|
||||||
g = (outval>>8) & 0xFF;
|
g = (outval>>8) & 0xFF;
|
||||||
|
@ -119,8 +113,7 @@ wxString AssColor::GetASSFormatted (bool alpha,bool stripped,bool isStyle) {
|
||||||
/////////////////////////
|
/////////////////////////
|
||||||
// Get decimal formatted
|
// Get decimal formatted
|
||||||
wxString AssColor::GetSSAFormatted () {
|
wxString AssColor::GetSSAFormatted () {
|
||||||
long color = ((a&127)<<24)+(b<<16)+(g<<8)+r;
|
long color = (a<<24)+(b<<16)+(g<<8)+r;
|
||||||
if ((a&128)!=0) color = 0-color;
|
|
||||||
wxString output=wxString::Format(_T("%i"),(long)color);
|
wxString output=wxString::Format(_T("%i"),(long)color);
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue