bool xml_get_attribute_bit_array(int n,char *name,unsigned char *value,int count) { int k; char str[5120]; bzero(value,count); if (!xml_get_attribute_raw(n,name,str,5120)) return(0); count=strlen(str); for (k=0;k<count;k+=2) { value[k>>1]=(unsigned char)((xml_hex_character_to_int(str[k])*16)+xml_hex_character_to_int(str[k+1])); } return(TRUE); }
void xml_parse_attribute(char *value) { int k,len; char *str,*fstr; // parse out � str=value; while (TRUE) { str=strstr(str,"&#x"); if (str==NULL) break; fstr=strchr((str+3),';'); if (fstr==NULL) { str+=3; continue; } len=(int)(fstr-str)-3; if (len>0) { k=0; if (len>1) { k=(xml_hex_character_to_int(str[3])*16)+xml_hex_character_to_int(str[4]); } else { k=xml_hex_character_to_int(str[3]); } *str=(char)k; len=(int)strlen(fstr+1)+1; memmove((str+1),(fstr+1),len); str++; } else { str=fstr+1; } } }
bool xml_get_attribute_color(int n,char *name,d3col *col) { int k; char str[8]; if (!xml_get_attribute_raw(n,name,str,8)) return(FALSE); k=(xml_hex_character_to_int(str[0])*16)+xml_hex_character_to_int(str[1]); col->r=((float)k)/(float)0xFF; k=(xml_hex_character_to_int(str[2])*16)+xml_hex_character_to_int(str[3]); col->g=((float)k)/(float)0xFF; k=(xml_hex_character_to_int(str[4])*16)+xml_hex_character_to_int(str[5]); col->b=((float)k)/(float)0xFF; return(TRUE); }