24 : position_of_lights(0), interval_mapping(0) {
69 const char *fmt, ...) {
73 size_t len = snprintf(buff,
sizeof(buff),
"!%s", name);
77 len += snprintf(buff + len,
sizeof(buff) - len,
" =");
80 for (
int i = 0; i < n; i++) {
81 len += snprintf(buff + len,
sizeof(buff) - len,
" ");
86 len += snprintf(buff + len,
sizeof(buff) - len,
"%s", va_arg(va,
char *));
90 len += snprintf(buff + len,
sizeof(buff) - len,
"%d", va_arg(va,
int));
94 len += snprintf(buff + len,
sizeof(buff) - len,
"%lg", va_arg(va,
double));
107 char type,
int n,
void *p) {
111 size_t len = snprintf(buff,
sizeof(buff),
"!%s", name);
114 len += snprintf(buff + len,
sizeof(buff) - len,
" =");
120 for (
int i = 0; i < n; i++) {
121 len += snprintf(buff + len,
sizeof(buff) - len,
", ");
125 len += snprintf(buff + len,
sizeof(buff) - len,
"%d", *ip);
130 len += snprintf(buff + len,
sizeof(buff) - len,
"%lg", *dp);
192 const char *delim =
", \t\r\n";
194 char *token = strtok(s, delim);
196 while (token && i < n) {
197 if (sscanf(token, fmt, &value[i]) != 1)
return -(i + 1);
199 token = strtok(0, delim);
207 return ReadVisValueT<int>(s, n, value,
"%d");
211 return ReadVisValueT<double>(s, n, value,
"%lf");
223 if (len >= n)
return 0;
225 snprintf(value, n,
"%s", s);
231 const int max_data_n = 200;
233 const char *delim =
", \t\r\n";
236 char *token = strtok(s, delim);
239 if (max_data_n >= i) assert(0);
243 if (sscanf(token, fmt, &x) != 1) {
248 token = strtok(0, delim);
255 for (i = 0; i < n; i++) {
264 snprintf(buff,
sizeof(buff),
"%s", line);
265 char *header = strtok(buff,
" =,\r\n\t");
267 if (header[0] == 0 || header[0] !=
'!')
return false;
270 #define GENERATE_CODE(x, n, fg) \
271 else if (strcmp(#x, header) == 0) { \
272 int r = ReadVisValue(0, n, &x); \
276 #define GENERATE_CODEA(x, n, fg) \
277 else if (strcmp(#x, header) == 0) { \
278 int r = ReadVisValue(0, n, x); \
308 #undef GENERATE_CODEA
309 #define GENERATE_CODE(x, n, type, fmt) \
310 else if (strcmp(#x, header) == 0) { \
313 x = ReadVisPArry<type>(0, n, fmt); \
385 for (
int i = 0; i < 10; i++)
coef[i] = 0;
396 hecd->
WriteLine(
"!!common of PSR ----------------------------------");
429 hecd->
WriteLine(
"!!for equivalent value surface -------------------");
439 hecd->
WriteLine(
"!!for surface of user defined equation -----------");
447 hecd->
WriteLine(
"!!for BMP output ---------------------------------");
460 snprintf(buff,
sizeof(buff),
"%s", line);
461 char *header = strtok(buff,
" =,\r\n\t");
463 if (header[0] == 0 || header[0] !=
'!')
return false;
466 #define GENERATE_CODE(x, n, fg) \
467 else if (strcmp(#x, header) == 0) { \
468 int r = ReadVisValue(0, n, &x); \
472 #define GENERATE_CODEA(x, n, fg) \
473 else if (strcmp(#x, header) == 0) { \
474 int r = ReadVisValue(0, n, x); \
517 #undef GENERATE_CODEA
560 hecd->
WriteLine(
"!!for dividing -----------------------------------");
576 hecd->
WriteLine(
"!!for opacity ------------------------------------");
587 hecd->
WriteLine(
"!!view params ------------------------------------");
599 snprintf(buff,
sizeof(buff),
"%s", line);
600 char *header = strtok(buff,
" =,\r\n\t");
602 if (header[0] == 0 || header[0] !=
'!')
return false;
605 #define GENERATE_CODE(x, n, fg) \
606 else if (strcmp(#x, header) == 0) { \
607 int r = ReadVisValue(0, n, &x); \
611 #define GENERATE_CODEA(x, n, fg) \
612 else if (strcmp(#x, header) == 0) { \
613 int r = ReadVisValue(0, n, x); \
640 #undef GENERATE_CODEA
641 #define GENERATE_CODE(x, n, type, fmt) \
642 else if (strcmp(#x, header) == 0) { \
645 x = ReadVisPArry<type>(0, n, fmt); \
679 vector<CVis_PSR *>::iterator is;
681 for (is =
psr.begin(); is !=
psr.end(); is++) {
694 hecd->
WriteHeader(
"!VISUAL",
"SIII",
"method",
"PSR",
"visual_start_step",
698 vector<CVis_PSR *>::iterator is;
700 for (is =
psr.begin(); is !=
psr.end(); is++) {
707 hecd->
WriteHeader(
"!VISUAL",
"SIII",
"method",
"PVR",
"visual_start_step",
719 if (!hecd->
ParseHeader(header_line, rcode,
"SIII",
"method", s,
727 bool fg_psr = (strcmp(
"PSR", method_s) == 0);
734 if (!hecd->
ReadLine(s))
return false;
739 if (strcmp(
"!SURFACE", s) != 0)
return false;
743 if (!vis_psr->
Read(hecd)) {
748 psr.push_back(vis_psr);
#define GENERATE_CODEA(x, n, fg)
#define GENERATE_CODE(x, n, fg)
virtual void Write(class CHECData *hecd)
virtual bool Read(class CHECData *hecd, char *header_line)
std::vector< CVis_PSR * > psr
virtual bool ParseHeader(char *header_line, int *rcode, const char *fmt,...)
virtual bool ReadLine(char *s, int size=256)
virtual bool ReadParameter(int *rcode, const char *fmt,...)
virtual void WriteHeader(const char *name, const char *fmt="",...)
virtual void WriteLine(const char *s)
virtual void PushReadLine(const char *s)
char color_subcomp_name[5]
char deform_comp_name[100]
virtual bool ReadData(const char *line)
char color_comp_name[100]
double deform_line_color[3]
double initial_line_color[3]
char data_subcomp_name[5]
virtual void Write(class CHECData *hecd)
int transfer_function_type
virtual void Write(class CHECData *hecd)
virtual bool ReadData(const char *line)
@ color_mapping_style_linear
virtual bool Read(class CHECData *hecd)
virtual bool ReadData(const char *line)
static void WriteVisParam(class CHECData *hecd, const char *name, const char *fmt,...)
@ color_system_type_blue_red
double * position_of_lights
static T * ReadVisPArry(char *s, int &n, const char *fmt)
virtual void Write(class CHECData *hecd)
static void WriteVisPArry(class CHECData *hecd, const char *name, char type, int n, void *p)
static int ReadVisValueT(char *s, int n, T *value, const char *fmt)
double * interval_mapping
virtual ~CVis_ViewParams()
double background_color[3]
static int ReadVisValue(char *s, int n, int *value)
void cleanup_token(char *s)