/* Prefrences Dialog handler */#include #include #include #include #include #include #include "App.h"#include "rollview.h"#include "prefinit.h"#include "proto.h"void SetRGBColorMode(RGBColor *setColor,short r,short g,short b);void SetRGBColorMode(RGBColor *setColor,short r,short g,short b){ setColor->red = r; setColor->green = g; setColor->blue = b;}OSErr Prefs_default(void){ /* initialize main window structure to some known values */ FILE *fd; char c,*dp, eol,found; char token[255],number[72]; short count; MenuHandle hMenu; gDefaultPref.CacheState = dirty; gDefaultPref.Num_Tiles_mem = 0; count = -1; gRollINI = (rollINIPtr)NewPtrClear(sizeof(rollINI)); if(!gRollINI) gRollINI = (rollINIPtr)NewPtrClear(sizeof(InstrumentScale) * 2); if(gRollINI) { /* set for 88 notes */ gRollINI->rolls = 1; gPianoID = 1; pstrcpy(gRollINI->instrument[0].roll_type, "\pPiano - 88 Note"); pstrcpy(gRollINI->instrument[0].roll_class, "\p88"); gRollINI->instrument[0].Width = 11.25; // (width of paper in inches) gRollINI->instrument[0].Nperfs = 100; // number of perforations gRollINI->instrument[0].LeftmostPerfPos = 0.125; // center of first hole relative to left edge gRollINI->instrument[0].PerfSpacing = 0.11111111; gRollINI->instrument[0].RewindTrack = 94; // first hole position is 1 gRollINI->instrument[0].ScanDirection = HeadFirst; // Headfirst or Tailfirst gRollINI->instrument[0].Side = FaceDown; // FaceUp or FaceDown gRollINI->instrument[0].Motor = 2; gRollINI->instrument[0].CISFileSuffix = 'S'; } else { HandleError(-1,true); } if (fd=fopen("rollfile.ini","r")) { //c = fgetc(fd); while((c = fgetc(fd)) != EOF) { dp = token; eol = false; while(!eol) { if(c == '[') { /* start a new instrument */ count += 1; while((c = fgetc(fd)) != EOF) { if(c == '\r' || c == '\n' || c == 0) { *dp = 0; eol = true; break; } if(c == ']') { *dp = 0; break; } *dp++ = c; } if((strcmp(token,"Motor Setting 1") == 0) || (strcmp(token,"Motor Setting 2") == 0)) { count -= 1; } else { CtoPstr(token); pstrcpy(gRollINI->instrument[count].roll_type,(unsigned char *)token); } while((c = fgetc(fd)) != EOF) { if(c == '\r' || c == '\n' || c == 0) { eol = true; break; } } } if(c == '\r' || c == '\n' || c == 0) { eol = true; break; } if(c == '/') { /* found a comment leader */ while((c = fgetc(fd)) != EOF) { if(c == '\r' || c == '\n' || c == 0) { eol = true; break; } } } if(eol) break; if(c == '\t') c = ' '; if(c != ' ') *dp++ = c; if((c = fgetc(fd)) == EOF) break; if( c == '=') { /* found an argument */ *dp = 0; dp = number; found = 0; while((c = fgetc(fd)) != EOF) { if(c == '"') { while((c = fgetc(fd)) != EOF) { if(c == '\r' || c == '\n' || c == 0) { *dp = 0; eol = true; break; } if(c == '"') { found = true; *dp = 0; while((c = fgetc(fd)) != EOF) { if(c == '\r' || c == '\n' || c == 0) { eol = true; break; } } break; } *dp++ = c; } } if(c == '\r' || c == '\n' || c == 0) { *dp = 0; eol = true; break; } if(c == '/') { /* found a comment leader */ while((c = fgetc(fd)) != EOF) { if(c == '\r' || c == '\n' || c == 0) { *dp = 0; eol = true; break; } } } if(eol) break; if(found) break; if(c == '\t') c = ' '; if(c != ' ') *dp++ = c; } found = 0; while(!found) { if(strcmp(token,"Width") == 0) { sscanf(number,"%f",&(gRollINI->instrument[count].Width)); found = 1; break; } if(strcmp(token,"Nperfs") == 0) { //sscanf(number,"%h",&(gRollINI->instrument[count].Nperfs)); gRollINI->instrument[count].Nperfs = atoi(number); found = 1; break; } if(strcmp(token,"LeftmostPerfPos") == 0) { sscanf(number,"%f",&(gRollINI->instrument[count].LeftmostPerfPos)); found = 1; break; } if(strcmp(token,"PerfSpacing") == 0) { sscanf(number,"%f",&(gRollINI->instrument[count].PerfSpacing)); found = 1; break; } if(strcmp(token,"RewindTrack") == 0) { //sscanf(number,"%h",&(gRollINI->instrument[count].RewindTrack)); gRollINI->instrument[count].RewindTrack = atoi(number); found = 1; break; } if(strcmp(token,"ScanDirection") == 0) { if(strcmp(number,"HeadFirst") == 0) gRollINI->instrument[count].ScanDirection = HeadFirst; else gRollINI->instrument[count].ScanDirection = TailFirst; found = 1; break; } if(strcmp(token,"Side") == 0) { if(strcmp(number,"FaceDown") == 0) gRollINI->instrument[count].Side = FaceDown; else gRollINI->instrument[count].Side = FaceUp; found = 1; } if(strcmp(token,"Motor") == 0) { //sscanf(number,"%h",&(gRollINI->instrument[count].Motor)); gRollINI->instrument[count].Motor = atoi(number); found = 1; break; } if(strcmp(token,"CISFileSuffix") == 0) { gRollINI->instrument[count].CISFileSuffix = number[0]; if(number[0] == 'S') gPianoID = count + 1; found = 1; break; } if(strcmp(token,"roll_class") == 0) { CtoPstr(number); pstrcpy(gRollINI->instrument[count].roll_class,(unsigned char *)number); found = 1; break; } if(strcmp(token,"midi_map") == 0) { //CtoPstr(number); strcpy(gRollINI->instrument[count].midi_map,number); found = 1; break; } else { break; } } } } // not eol } gRollINI->rolls = count+1; } strcpy(gDefaultPref.Tabfile,""); gDefaultPref.resolution = 300; /* scanner resolution */ gDefaultPref.totalscanlines = 0; gDefaultPref.RollBKG = 0; /* pre computed image background */ gDefaultPref.RollHilight = 0; /* pre computed contrast limeted overlay */ SetRect(&gDefaultPref.traker_port_scale,0, 0 , 3000, 3000); gDefaultPref.active_tracker_ports = 54; /* count this format has accross bar */ gDefaultPref.tracker_port_separation = 3681; /* distance ports are separated *1000 */ gDefaultPref.left_tracker_pin = 731; gDefaultPref.right_tracker_pin = 2680; /* active margins */ gDefaultPref.compensation_flag = steps_per_inch; /* compensate | steps_per_inch */ gDefaultPref.display_units = imperial; /* metric | imperial */ gDefaultPref.tempo_display = barbeattick; /* bar:beat:tick| timecode */ gDefaultPref.bar0 = 27.50; /* first scanline in song */ gDefaultPref.anacrusis = 1; /* beat 0 */ /*char total_ports[128]; state of ports on bar char gDefaultPref.midi_chan[128], midi_note[128]; hints for staus bar char *ascii_name[128]; hints of port functions */ gDefaultPref.spool_diam = 3.0; /* size of spool for compensation */ gDefaultPref.start_tempo = 85.0; /* feet per second */ gDefaultPref.tracker_port_per_inch = 9.0; /* default 9 */ gDefaultPref.steps_per_inch = 0.065; /* for pianos */ gDefaultPref.paper_thickness = .001; /* for band organs */ gDefaultPref.tuc = 0; // stibbons compensation gDefaultPref.active = -1; /* index in array below of active segment in cache */ gDefaultPref.above = -1; /* index of next likely segment to convert */ gDefaultPref.below = -1; /* index of next likety segment to convert */ gDefaultPref.allocated_segments = 0; /* file contains this many segments */ gDefaultPref.tile = 0L; gDefaultPref.hitActive = 0L; /* dynamic hit regions */ gDefaultPref.activeTool = 0; gDefaultPref.Zoom_factor = 100; gDefaultPref.scanFactor = 1.0; gDefaultPref.selection.top = 0; gDefaultPref.selection.left = 0; gDefaultPref.selection.right = 0; gDefaultPref.selection.bottom = 0; gDefaultPref.selEventCount = 0; gDefaultPref.activeEventCount = 0; gDefaultPref.flags[0] = 0; SetRGBColorMode(&gDefaultPref.blackLine,0,0,0); SetRGBColorMode(&gDefaultPref.whiteLine,0xFFFF,0xFFFF,0xFFFF); SetRGBColorMode(&gDefaultPref.blueLine,0,0,0xd400); SetRGBColorMode(&gDefaultPref.cyanLine,0x0241,0xAB54,0xEAFF); SetRGBColorMode(&gDefaultPref.redLine,0xDD6B,0x08C2,0x06A2); SetRGBColorMode(&gDefaultPref.magLine,0xF2D7,0x0856,0x84EC); SetRGBColorMode(&gDefaultPref.yellowLine,0xFC00,0xF37D,0x052F); SetRGBColorMode(&gDefaultPref.greenLine,0,0x8000,0x11b0); gDefaultPref.mirror = true; hMenu = GetMenu(mView); if(gDefaultPref.mirror) CheckItem(hMenu,iVMirror,true); else CheckItem(hMenu,iVMirror,false); gDefaultPref.invert = false; hMenu = GetMenu(mView); if(gDefaultPref.invert) CheckItem(hMenu,iVInvert,true); else CheckItem(hMenu,iVInvert,false); hMenu = GetMenu(mView); EnableItem(hMenu,0); hMenu = GetMenu(mEdit); DisableItem(hMenu,iGoto); DisableItem(hMenu,iFind); hMenu = GetMenu(134); DisableItem(hMenu,iSCN58); DisableItem(hMenu,iMID58); hMenu = GetMenu(mFile); DisableItem(hMenu,iImport); DisableItem(hMenu,iExport); return noErr;}void LoadMapFile(char *defMap){ FILE *fd; char c,*dp,found; char token[255],parameter[72]; int column,channel,note; column = 1; channel = 1; strcpy(gDefaultPref.Tabfile,defMap); if (fd=fopen(gDefaultPref.Tabfile,"r")) { // simple parser found = 0; // skip header while((c = fgetc(fd)) != '/') ; while((c = fgetc(fd)) != EOF) { // parse token dp = token; do { if(c == ':' || c == '\n' || c == '\r') break; if(!(c == ' ' || c == '\t' || c == '/')) *dp++ = c; } while((c = fgetc(fd)) != EOF); while((c = fgetc(fd)) == ' ') ; *dp = 0; //parse the parameter dp = parameter; do { if(c == ' ' || c == '\t') break; *dp++ = c; } while((c = fgetc(fd)) != EOF); *dp = 0; found = 0; while(!found) { if(strcmp(token,"column") == 0) { column = atoi(parameter); found = 1; while((c = fgetc(fd)) != '/') ; break; } if(strcmp(token,"channel") == 0) { channel = atoi(parameter); found = 1; while((c = fgetc(fd)) != '/') ; break; } if(strcmp(token,"note") == 0) { note = atoi(parameter); found = 1; // store in mapping array gDefaultPref.midi_chan[column-1] = channel; gDefaultPref.midi_note[column-1] = note; while((c = fgetc(fd)) == ' '); // skip the space before the comment // parse comment dp = token; *dp++ = c; c = fgetc(fd); while(c != '/') { if(c == EOF) break; if(c == '\n' || c == '\r') c = ' '; *dp++ = c; if((c = fgetc(fd)) == ' ') { *dp++ = c; while((c = fgetc(fd)) == ' ') ; // ignore runs of blank space } } *dp = 0; gDefaultPref.ascii_name[column-1] = NewPtrClear(strlen(token)+1); strcpy(gDefaultPref.ascii_name[column-1],token); CtoPstr((char *)gDefaultPref.ascii_name[column-1]); break; } else { break; } } } fclose(fd); } //strcpy(gDefaultPref.TileBuf,"");}/* save prefs */void SaveDefaultPrefs( WindowRef window){ OSErr err = noErr; StandardFileReply reply; short refNum; DocHnd doc; RollSettingsPtr dr; char buffer[72]; Str255 numString; long slen; if(window) { doc = (DocHnd)GetWRefCon(window); if(doc) { dr = (**doc).contentDraw; } } else dr = &gDefaultPref; StandardPutFile("\pprefs: ","\pinstrument.ini",&reply); if (reply.sfGood) { if (reply.sfReplacing ) err = FSpDelete(&reply.sfFile); err = FSpCreate(&reply.sfFile, 'dosa', 'TEXT', reply.sfScript); if (err == noErr) err = FSpOpenDF(&reply.sfFile,fsRdWrPerm, &refNum); if (err == noErr) err = SetFPos(refNum, fsFromStart , 0); strcpy(buffer,"/mapping: \""); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); slen = strlen(dr->Tabfile); err = FSWrite(refNum, &slen, dr->Tabfile); strcpy(buffer,"\"\n/resolution: "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); NumToString(dr->resolution, numString ); slen = numString[0]; err = FSWrite(refNum, &slen, &numString[1]); strcpy(buffer,"\n/traker_port_scale: "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); NumToString(dr->traker_port_scale.top, numString ); slen = numString[0]; err = FSWrite(refNum, &slen, &numString[1]); strcpy(buffer," "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); NumToString(dr->traker_port_scale.left, numString ); slen = numString[0]; err = FSWrite(refNum, &slen, &numString[1]); strcpy(buffer," "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); NumToString(dr->traker_port_scale.bottom, numString ); slen = numString[0]; err = FSWrite(refNum, &slen, &numString[1]); strcpy(buffer," "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); NumToString(dr->traker_port_scale.right, numString ); slen = numString[0]; err = FSWrite(refNum, &slen, &numString[1]); strcpy(buffer,"\n/active_tracker_ports: "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); NumToString(dr->active_tracker_ports, numString ); slen = numString[0]; err = FSWrite(refNum, &slen, &numString[1]); strcpy(buffer,"\n/left_tracker_pin: "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); NumToString(dr->left_tracker_pin, numString ); slen = numString[0]; err = FSWrite(refNum, &slen, &numString[1]); strcpy(buffer,"\n/right_tracker_pin: "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); NumToString(dr->right_tracker_pin, numString ); slen = numString[0]; err = FSWrite(refNum, &slen, &numString[1]); strcpy(buffer,"\n/tracker_port_separation: "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); NumToString(dr->tracker_port_separation, numString ); slen = numString[0]; err = FSWrite(refNum, &slen, &numString[1]); strcpy(buffer,"\n/compensation_flag: "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); switch(dr->compensation_flag) { case steps_per_inch: strcpy(buffer,"steps_per_inch"); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); break; case compensate: strcpy(buffer,"compensate"); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); break; } strcpy(buffer,"\n/display_units: "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); switch(dr->display_units) { case imperial: strcpy(buffer,"imperial"); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); break; case metric: strcpy(buffer,"metric"); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); break; } strcpy(buffer,"\n/tempo_display: "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); switch(dr->tempo_display) { case barbeattick: strcpy(buffer,"barbeattick"); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); break; case timecode: strcpy(buffer,"timecode"); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); break; case SMPTE: strcpy(buffer,"SMPTE"); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); break; } sprintf(buffer,"\n/bar0: %f",dr->bar0); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); sprintf(buffer,"\n/anacrusis: %f",dr->anacrusis); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); sprintf(buffer,"\n/spool_diam: %f",dr->spool_diam); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); sprintf(buffer,"\n/start_tempo: %f",dr->start_tempo); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); sprintf(buffer,"\n/tracker_port_per_inch: %f",dr->tracker_port_per_inch); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); sprintf(buffer,"\n/steps_per_inch: %f",dr->steps_per_inch); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); sprintf(buffer,"\n/paper_thickness: %f",dr->paper_thickness); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); sprintf(buffer,"\n/tuc: %f",dr->tuc); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); strcpy(buffer,"\n/flags: \""); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); NumToString(dr->tempo_display, numString ); slen = dr->flags[0]; err = FSWrite(refNum, &slen, &(dr->flags[1])); strcpy(buffer,"\"\n/mirror: "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); NumToString(dr->mirror, numString ); slen = numString[0]; err = FSWrite(refNum, &slen, &numString[1]); strcpy(buffer,"\n/invert: "); slen = strlen(buffer); err = FSWrite(refNum, &slen, buffer); NumToString(dr->invert, numString ); slen = numString[0]; err = FSWrite(refNum, &slen, &numString[1]); FSClose(refNum); // close the file }}/* load prefs */void LoadDefaultPrefs( WindowRef window){ OSErr err = noErr; StandardFileReply reply; short refNum; DocHnd doc; RollSettingsPtr dr; SFTypeList initTypes = {'pINI','dosa','TEXT'}; long blockCount; char c,*dp,*block; char token[72],parameter[72],number[5]; short found; MenuHandle hMenu; int column,channel,note; FILE *fd; if(window) { doc = (DocHnd)GetWRefCon(window); if(doc) { dr = (**doc).contentDraw; } } else dr = &gDefaultPref; StandardGetFile(0,3,initTypes,&reply); if (reply.sfGood) { if (err == noErr) err = FSpOpenDF(&reply.sfFile,fsRdWrPerm, &refNum); err = GetEOF(refNum,&blockCount); if (err == noErr) err = SetFPos(refNum, fsFromStart , 0); block = NewPtrClear(blockCount + 1); err = FSRead(refNum,&blockCount,block); block[blockCount] = 0; c = *block; // simple parser while(c != 0) { while((c = *block++) != '/') if(c == 0) break; //skip header if(c == 0) break; // parse token dp = token; while((c = *block++) != ':') { *dp++ = c; } *dp = 0; //parse the parameter dp = parameter; while((c = *block++) == ' ') ; do { if(c == '\"') { while((c = *block++) != '\"') *dp++ = c; break; } if(c == '\n') break; if(c == 0) break; *dp++ = c; } while((c = *block++) != ' '); *dp = 0; found = 0; while(!found) { if(strcmp(token,"mapping") == 0) { strcpy(dr->Tabfile,parameter); if (fd=fopen(dr->Tabfile,"r")) { // simple parser while((c = fgetc(fd)) != '/'); //skip header // loop stars here while(c != EOF) { // parse token dp = token; while((c = fgetc(fd)) != ':') { *dp++ = c; } *dp = 0; // should test for proper name 'column' //parse the number dp = number; while((c = fgetc(fd)) != ' ') { *dp++ = c; } *dp = 0; column = atoi(number); //parse the channel while((c = fgetc(fd)) != '/'); //skip header dp = token; while((c = fgetc(fd)) != ':') { *dp++ = c; } *dp = 0; // should test for proper name 'channel' //parse the number dp = number; while((c = fgetc(fd)) != ' ') { *dp++ = c; } *dp = 0; channel = atoi(number); //parse the note while((c = fgetc(fd)) != '/'); //skip header dp = token; while((c = fgetc(fd)) != ':') { *dp++ = c; } *dp = 0; // should test for proper name 'note' //parse the number dp = number; while((c = fgetc(fd)) != ' ') { *dp++ = c; } *dp = 0; note = atoi(number); // store in mapping array dr->midi_chan[column-1] = channel; dr->midi_note[column-1] = note; while((c = fgetc(fd)) == ' '); // skip the space before the comment // parse comment dp = token; *dp++ = c; c = fgetc(fd); while(c != '/') { if(c == EOF) break; if(c == '\n' || c == '\r') c = ' '; *dp++ = c; if((c = fgetc(fd)) == ' ') { *dp++ = c; while((c = fgetc(fd)) == ' ') ; // ignore runs of blank space } } *dp = 0; if(dr->ascii_name[column-1]) DisposePtr(dr->ascii_name[column-1]); dr->ascii_name[column-1] = NewPtrClear(strlen(token)+1); strcpy(dr->ascii_name[column-1],token); CtoPstr((char *)dr->ascii_name[column-1]); } fclose(fd); } else { /* clear table */ for(column = 0; column < 128; column++) { dr->midi_chan[column] = 0; dr->midi_note[column] = 0; if(dr->ascii_name[column]) DisposePtr(dr->ascii_name[column]); dr->ascii_name[column] = 0; } } found = 1; break; } if(strcmp(token,"resolution") == 0) { dr->resolution = atoi(parameter); found = 1; break; } if(strcmp(token,"traker_port_scale") == 0) { dr->traker_port_scale.top = atoi(parameter); //parse the number dp = parameter; while((c = *block++) != ' ') { *dp++ = c; } *dp = 0; dr->traker_port_scale.left = atoi(parameter); //parse the number dp = parameter; while((c = *block++) != ' ') { *dp++ = c; } *dp = 0; dr->traker_port_scale.bottom = atoi(parameter); //parse the number dp = parameter; while((c = *block++) != '\n') { *dp++ = c; } *dp = 0; dr->traker_port_scale.right = atoi(parameter); found = 1; break; } if(strcmp(token,"active_tracker_ports") == 0) { dr->active_tracker_ports = atoi(parameter); found = 1; break; } if(strcmp(token,"tracker_port_separation") == 0) { dr->tracker_port_separation = atoi(parameter); found = 1; break; } if(strcmp(token,"left_tracker_pin") == 0) { dr->left_tracker_pin = atoi(parameter); found = 1; break; } if(strcmp(token,"right_tracker_pin") == 0) { dr->right_tracker_pin = atoi(parameter); found = 1; break; } if(strcmp(token,"compensation_flag") == 0) { found = 0; while(!found) { if(strcmp(parameter,"steps_per_inch") == 0) { dr->compensation_flag = steps_per_inch; found = 1; break; } if(strcmp(parameter,"compensate") == 0) { dr->compensation_flag = steps_per_inch; found = 1; break; } else { found = 1; break; } } found = 1; break; } if(strcmp(token,"display_units") == 0) { found = 0; while(!found) { if(strcmp(parameter,"metric") == 0) { dr->display_units = metric; found = 1; break; } if(strcmp(parameter,"imperial") == 0) { dr->display_units = imperial; found = 1; break; } else { found = 1; break; } } found = 1; break; } if(strcmp(token,"tempo_display") == 0) { found = 0; while(!found) { if(strcmp(parameter,"steps_per_inch") == 0) { dr->tempo_display = barbeattick; found = 1; break; } if(strcmp(parameter,"timecode") == 0) { dr->tempo_display = barbeattick; found = 1; break; } if(strcmp(parameter,"SMPTE") == 0) { dr->tempo_display = steps_per_inch; found = 1; break; } else { found = 1; break; } } found = 1; break; } if(strcmp(token,"bar0") == 0) { sscanf(parameter,"%f",&(dr->bar0)); found = 1; break; } if(strcmp(token,"anacrusis") == 0) { sscanf(parameter,"%f",&(dr->anacrusis)); found = 1; break; } if(strcmp(token,"spool_diam") == 0) { sscanf(parameter,"%f",&(dr->spool_diam)); found = 1; break; } if(strcmp(token,"start_tempo") == 0) { sscanf(parameter,"%f",&(dr->start_tempo)); found = 1; break; } if(strcmp(token,"tracker_port_per_inch") == 0) { sscanf(parameter,"%f",&(dr->tracker_port_per_inch)); found = 1; break; } if(strcmp(token,"steps_per_inch") == 0) { sscanf(parameter,"%f",&(dr->steps_per_inch)); found = 1; break; } if(strcmp(token,"paper_thickness") == 0) { sscanf(parameter,"%f",&(dr->paper_thickness)); found = 1; break; } if(strcmp(token,"tuc") == 0) { sscanf(parameter,"%f",&(dr->tuc)); found = 1; break; } if(strcmp(token,"flags") == 0) { dr->flags[0] = strlen(parameter); strcpy(&(dr->flags[1]),parameter); found = 1; break; } if(strcmp(token,"mirror") == 0) { dr->mirror = atoi(parameter); hMenu = GetMenu(mView); if(dr->mirror) CheckItem(hMenu,iVMirror,true); else CheckItem(hMenu,iVMirror,false); found = 1; break; } if(strcmp(token,"invert") == 0) { dr->invert = atoi(parameter); hMenu = GetMenu(mView); if(dr->invert) CheckItem(hMenu,iVInvert,true); else CheckItem(hMenu,iVInvert,false); found = 1; break; } else { found = 1; break; } } } DisposePtr(block); FSClose(refNum); // close the file if(window) DrawWindow(window,0); } }