00001
00007
00008
00009 #include "NPWGraphics.h"
00010 #include <stdarg.h>
00011
00013 #define Chk(e) \
00014 do { \
00015 err = (e); \
00016 if (err != kNPWErrOk) \
00017 return err; \
00018 } while (0)
00019
00020
00021 NPWErr NPWGraphicsCmd(NPW *pdf, NPWConstText cmd, NPWConstText fmt, ...)
00022 {
00023 va_list ap;
00024 NPWErr err = kNPWErrOk;
00025 NPWConstText str;
00026 NPWInt len;
00027
00028 va_start(ap, fmt);
00029 while (*fmt)
00030 {
00031 switch (*fmt++)
00032 {
00033 case 'f':
00034 #if !defined(NPWNoFloat)
00035 err = NPWWriteFloat(pdf, va_arg(ap, NPWFloat));
00036 break;
00037 #endif
00038 case 'i':
00039 err = NPWWriteInt(pdf, va_arg(ap, NPWInt), -1);
00040 break;
00041 case 'S':
00042 str = va_arg(ap, NPWConstText);
00043 len = va_arg(ap, NPWInt);
00044 err = NPWWrite(pdf, str, len);
00045 break;
00046 case 's':
00047 str = va_arg(ap, NPWConstText);
00048 len = va_arg(ap, NPWInt);
00049 err = NPWWriteString(pdf, str, len);
00050 break;
00051 case '[':
00052 case ']':
00053 err = NPWWrite(pdf, &fmt[-1], 1);
00054 break;
00055 }
00056 if (err == kNPWErrOk)
00057 err = NPWWrite(pdf, " ", 1);
00058 if (err != kNPWErrOk)
00059 break;
00060 }
00061 va_end(ap);
00062
00063 if (err != kNPWErrOk)
00064 return err;
00065
00066 Chk(NPWWrite(pdf, cmd, -1));
00067 Chk(NPWWrite(pdf, "\n", -1));
00068 return kNPWErrOk;
00069 }