/* ------------------------------------------------------------------ */ static void choose_font(void) { OBJECT *loading; int cx, cy, cw, ch; bool is_prn; is_prn = (form_alert( 1, "[0][select device][screen|printer]" )==2); dprintf(( "\033Hselected %s workstation\n", is_prn? "printer": "screen" )); if( init_wkstn( is_prn ) ) { graf_mouse(BUSY_BEE, 0); dprintf(( "ready to load fonts ... " )); dgetchar(); rsrc_gaddr( R_TREE, LDGFONTS, &loading ); form_center( loading, &cx, &cy, &cw, &ch); form_dial(FMD_START, 0, 0, 0, 0, cx, cy, cw, ch); objc_draw( loading, ROOT, MAX_DEPTH, cx, cy, cw, ch); (void)vst_load_fonts(handle, 0); form_dial( FMD_FINISH, 0, 0, 0, 0, cx, cy, cw, ch ); dprintf(( "\033Hdone\nnow getting font names ..." )); dgetchar(); if( get_fontnames( *(tGemFont **)(&_contrl[10]) ) ) { dprintf(( "done\n" )); dgetchar(); graf_mouse(ARROW, 0); while( select_font( is_prn ) ) { if( iSelected == NO_INDEX ) { form_alert( 1, "[1][You must choose|a font to dump][Try Again]" ); } else if( gem_file_name[0] == '\0' ) { form_alert( 1, "[1][You must choose a|" "gem font file name][Try Again]" ); } else { dump_font(); gem_file_name[0] = '\0'; /* reset entries for next round */ iSelected = NO_INDEX; } /* if */ } /* while */ } /* if */ vst_unload_fonts(handle, 0); free(name_table); dprintf(( "\033Hclosing %s workstation ...", is_prn? "printer": "screen" )); if( is_prn ) v_clswk(handle); else v_clsvwk(handle); } else form_alert(1, "[3][Can't open workstation][OK]"); } /* choose_font() */
void scan_drivers(void) { GEM_WINDOW *wprog ; char driver_name[128] ; char devstring[128] ; int libr, driv, xplane, attrib ; int devnum, devexist, prt_handle, new_driver ; mouse_busy() ; wprog = DisplayStdProg( msg[MSG_LOOKSPDDRV], "", "", CLOSER ) ; for (devnum = 21 ; devnum < 31 ; devnum++) /* on va tester tous les No Gdos pour l'impression */ { prt_handle = open_work(devnum) ; /* Ouverture de la station imprimante */ if ( prt_handle ) /* driver dispo pour ce num‚ro */ { /* s'enquiŠre du nom de l'imprimante */ vqt_devinfo( prt_handle, devnum, &devexist, devstring ) ; /* if ( devexist ) { Test enleve depuis VISION 4.0 car sous NVDI 5, devexist vaut 0 pour gestion du multitache */ id[nb_drivers] = devnum ; strcpy(driver_name, (char *)&_VDIParBlk.ptsout[1]) ; new_driver = vq_driver_info( prt_handle, &libr, &driv, &xplane, &attrib, devstring ) ; if ( new_driver ) { if ( strlen( devstring ) >= 19) devstring[19] = 0 ; strcpy(&printer_names[nb_drivers][0], devstring) ; } else strcpy( &printer_names[nb_drivers][0], driver_name ) ; StdProgWText( wprog, 1, &printer_names[nb_drivers][0] ) ; nb_drivers++ ; /* }*/ v_clswk(prt_handle) ; /* ferme la station de l'imprimante */ } wprog->ProgPc( wprog, 10*(devnum-20), NULL ) ; } printer_init = 1 ; mouse_restore() ; GWDestroyWindow( wprog ) ; }
/******************************************************* * load fonts for device * get font chain and dump fonts (width table only) in current directory */ static void dump_gem_fonts( int16 dev_nr ) { const tGemFont *pgf; /* pointer to the font chain */ int16 handle; char *err_msg; register tGemFont *phdr; /* pointer to font we are making */ char *const gempath = ((void**)pInfo)[-1]; FILE *fp; int xdial,ydial,wdial,hdial; /* co-ords for dialog box */ int x,y,w,h; handle = init_wkstn( dev_nr ); /* open the workstation */ if( handle == 0 ) { sprintf( err_string, "[3][can't connect to %s][skip]", dev_nr>10? "printer": "screen" ); form_alert(1, err_string ); return; } /* if */ if( vst_load_fonts( handle, 0 ) == 0 ) { sprintf( err_string, "[3][can't find fonts for %s][skip]", dev_nr>10? "printer": "screen" ); goto error0; } /* if */ pgf = *(tGemFont **)(&_contrl[10]); /* get pointer to font chain */ save[dev_nr].pw->first_font = gem_font_count; /****************** * loop thru font chain, * writing a new font file for each font found in the chain * count the fonts so we can assign them to the workstations * this can take quite a while, so report progress as we go */ form_center (&rs_object,&xdial,&ydial,&wdial,&hdial); x=y=w=h=0; form_dial (FMD_START,x,y,w,h,xdial,ydial,wdial,hdial); /* reserve room */ for( ; pgf!=NULL; pgf=pgf->next_font ) { const uint16 nr_entries = pgf->last_ade - pgf->first_ade + 1; const uint32 size_wid = (nr_entries+1) * sizeof(int16); /* sizeof(*(tGemFont*)->off_table) */ register int16 *char_tbl; register uint16 i; /* printf( "line %d, %.32s, %d points\n", (int)__LINE__, pgf->name, pgf->size ); */ sprintf( usr_msg, "storing gem fonts: %d", gem_font_count ); objc_draw( &rs_object, 0, 2, xdial, ydial, wdial, hdial ); /* draw the dialog box */ phdr = (tGemFont*)malloc( sizeof(tGemFont) + size_wid ); if( phdr == NULL ) { err_msg = "[3][Not enough memory|to dump font][OK]"; goto error1; } /* if */ *phdr = *pgf; /* copy header data */ phdr->off_table = (int16*)sizeof(tGemFont); memcpy( phdr+1, pgf->off_table, size_wid ); phdr->dat_table = 0L; /** convert font to intel format before dumping **/ for( i = nr_entries+1, char_tbl = (int16*)(phdr+1); i > 0; i--, char_tbl++ ) { Swapw(*char_tbl); } /* for */ /* swap header words and longs */ phdr->flags &= ~MOT_FLAG; Swapw(phdr->font_id); Swapw(phdr->size); Swapw(phdr->first_ade); Swapw(phdr->last_ade); Swapw(phdr->top); Swapw(phdr->ascent); Swapw(phdr->half); Swapw(phdr->descent); Swapw(phdr->bottom); Swapw(phdr->max_char_width); Swapw(phdr->max_cell_width); Swapw(phdr->left_offset); Swapw(phdr->right_offset); Swapw(phdr->thicken); Swapw(phdr->ul_size); Swapw(phdr->lighten); Swapw(phdr->skew); Swapw(phdr->flags); Swapl(phdr->h_table); Swapl(phdr->off_table); Swapl(phdr->dat_table); Swapw(phdr->form_width); Swapw(phdr->form_height); /* printf( "line %dn", (int)__LINE__); getchar(); */ FONT_FILE_NAME( gempath+pInfo->len_gem_path, gem_font_count ); fp = fopen( gempath, "wb" ); if( fp == NULL ) { err_msg = "[3][can't open gem font file|%s][OK]"; goto error2; } /* if */ /** write the font header **/ if( fwrite( phdr, sizeof( *phdr), 1, fp ) != 1 ) { goto error3; } /* if */ /** write the character offset table **/ if( fwrite( phdr+1, size_wid, 1, fp ) != 1 ) { goto error3; } /* if */ fclose( fp ); free( phdr ); gem_font_count++; } /* for */ save[dev_nr].pw->nr_gemfonts = gem_font_count - save[dev_nr].pw->first_font; (void)vst_unload_fonts( handle, 0 ); if( dev_nr>10 ) v_clswk(handle); else v_clsvwk(handle); form_dial( FMD_FINISH, x, y, w, h, xdial, ydial, wdial, hdial ); /* release its room */ return; error3: fclose(fp); err_msg = "[3][can't write to gem font file|%s][OK]"; error2: sprintf( err_string, err_msg, strerror(errno) ); free( phdr ); error1: form_dial( FMD_FINISH, x, y, w, h, xdial, ydial, wdial, hdial ); /* release its room */ error0: (void)vst_unload_fonts( handle, 0 ); if( dev_nr>10 ) v_clswk(handle); else v_clsvwk(handle); form_alert(1, err_string ); } /* dump_gem_fonts() */
int print_image(MFDB *raster, INFO_IMAGE *in_info) { GEM_WINDOW *wprog = NULL ; DLGDATA dlg_data ; DLGPRINTER_USER_DATA dlg_user_data ; GEM_WINDOW *dlg ; MFDB src ; float sizex, sizey ; float ptpx, ptpy ; int pintin[256], pintout[256] ; int xyarray[4] ; int print_handle ; int i, xoffset, yoffset ; int bouton ; int dither_mono, print_color ; char *filename = dlg_user_data.filename ; char *c ; char buffer[200] ; char nom[30] ; if ( !Gdos ) return(PNOGDOS) ; if ( !printer_init ) scan_drivers() ; if ( nb_drivers <= 0 ) return( PNODRIVER ) ; memset( &dlg_user_data, 0, sizeof(DLGPRINTER_USER_DATA) ) ; if ( raster ) memcpy( &dlg_user_data.raster, raster, sizeof(MFDB) ) ; if ( in_info ) memcpy( &dlg_user_data.info, in_info, sizeof(INFO_IMAGE) ) ; while ( dlg_user_data.raster.fd_w == 0 ) { strcpy( buffer, filename ) ; c = strrchr( buffer, '\\' ) ; if ( c ) *c = 0 ; strcat( buffer, "\\*.*" ) ; if ( file_name( buffer, "", buffer ) == 1 ) { INFO_IMAGE inf ; strcpy( dlg_user_data.filename, buffer ) ; if ( img_format(dlg_user_data.filename, &inf) == 0 ) { memcpy(&dlg_user_data.info, &inf, sizeof(INFO_IMAGE)) ; memset(&dlg_user_data.raster, 0, sizeof(MFDB)) ; dlg_user_data.raster.fd_w = inf.largeur ; dlg_user_data.raster.fd_h = inf.hauteur ; dlg_user_data.raster.fd_nplanes = inf.nplans ; dlg_user_data.raster.fd_wdwidth = dlg_user_data.raster.fd_w/16 ; if (dlg_user_data.raster.fd_w % 16) dlg_user_data.raster.fd_wdwidth++ ; } } else return(PCANCEL) ; } memset( &dlg_data, 0, sizeof(DLGDATA) ) ; dlg_data.RsrcId = FORM_PRINT ; dlg_data.UserData = &dlg_user_data ; dlg_data.ExtensionSize = 0 ; /* Sera alloue par OnInitPrinterDialog */ dlg_data.OnInitDialog = OnInitPrinterDialog ; dlg_data.OnObjectNotify = OnObjectNotifyPrinterDialog ; dlg_data.OnCloseDialog = OnClosePrinterDialog ; dlg = GWCreateDialog( &dlg_data ) ; bouton = GWDoModal( dlg, PRINT_XPC ) ; if ( bouton == IDCANCEL ) return( PCANCEL ) ; printer_index = dlg_user_data.printer_index ; type_index = dlg_user_data.type_index ; if ( dlg_user_data.filename[0] ) { INFO_IMAGE inf ; int analyse = img_analyse ; img_analyse = 0 ; if ( img_format( dlg_user_data.filename, &inf ) == 0 ) { memcpy(&dlg_user_data.info, &inf, sizeof(INFO_IMAGE)) ; src.fd_nplanes = -1 ; /* Conserver le nombre de plans */ Force16BitsLoad = 0 ; wprog = DisplayStdProg( msg[MSG_LOADINGIMG], "", dlg_user_data.filename, 0 ) ; if ( load_picture( dlg_user_data.filename, &src, &inf, wprog ) != 0 ) { GWDestroyWindow( wprog ) ; img_analyse = analyse ; return(PCANCEL) ; } StdProgWText( wprog, 1, "" ) ; } else { img_analyse = analyse ; return( PCANCEL ) ; } img_analyse = analyse ; GWDestroyWindow( wprog ) ; wprog = NULL ; } else memcpy( &src, &dlg_user_data.raster, sizeof(MFDB) ) ; pintin[0] = id[dlg_user_data.printer_index] ; if ((pintin[0] < 21) || (pintin[0] > 30)) return( PNOHANDLE ) ; for (i = 1; i < 10; i++) pintin[i] = 1 ; pintin[10] = 2 ; v_opnwk( pintin, &print_handle, pintout ) ; if ( print_handle <= 0 ) return(PNOHANDLE) ; ptpx = (float)pintout[3] ; /* Largeur d'un point imprimante en microns */ ptpy = (float)pintout[4] ; /* Hauteur d'un point imprimante en microns */ wprog = DisplayStdProg( "", "", "", CLOSER ) ; dither_mono = (dlg_user_data.type_index == 1) && (src.fd_nplanes > 1) ; print_color = (dlg_user_data.type_index == 0) ; if ( dither_mono ) /* Mode noir et blanc */ { MFDB virtuel ; int pc_x, pc_y ; StdProgWText( wprog, 0, msg[MSG_DITHER] ) ; virtuel.fd_nplanes = 1 ; if ( dlg_user_data.rotate90 ) pc_x = (int) (dlg_user_data.xpc*(float)dlg_user_data.info.lpix/ptpy) ; else pc_x = (int) (dlg_user_data.xpc*(float)dlg_user_data.info.lpix/ptpx) ; if ( dlg_user_data.rotate90 ) pc_y = (int) (dlg_user_data.ypc*(float)dlg_user_data.info.hpix/ptpx) ; else pc_y = (int) (dlg_user_data.ypc*(float)dlg_user_data.info.hpix/ptpy) ; mouse_busy() ; if ( dither_ratio(&src, &dlg_user_data.info, &virtuel, pc_x, pc_y, wprog ) == -1 ) { if ( dlg_user_data.filename[0] ) { free( src.fd_addr ) ; if ( dlg_user_data.filename[0] && dlg_user_data.info.palette ) free( dlg_user_data.info.palette ) ; } mouse_restore() ; GWDestroyWindow( wprog ) ; v_clswk( print_handle ) ; return( PROTERR ) ; } wprog->ProgPc( wprog, 0, NULL ) ; mouse_restore() ; if ( dlg_user_data.filename[0] ) free( src.fd_addr ) ; memcpy( &src, &virtuel, sizeof(MFDB) ) ; } if ( dlg_user_data.rotate90 ) { MFDB virtuel ; StdProgWText( wprog, 0, msg[MSG_ROTATING] ) ; mouse_busy() ; if ( raster_r90( &src, &virtuel, wprog ) != 0 ) { if ( dither_mono || dlg_user_data.filename[0] ) free( src.fd_addr ) ; if ( dlg_user_data.filename[0] && dlg_user_data.info.palette ) free( dlg_user_data.info.palette ) ; mouse_restore() ; GWDestroyWindow( wprog ) ; v_clswk( print_handle ) ; return( PROTERR ) ; } mouse_restore() ; if ( dither_mono || dlg_user_data.filename[0] ) free(src.fd_addr ) ; memcpy( &src, &virtuel, sizeof(MFDB) ) ; } sizex = (float)src.fd_w*(float)dlg_user_data.info.lpix*dlg_user_data.xpc/100.0 ; sizey = (float)src.fd_h*(float)dlg_user_data.info.hpix*dlg_user_data.ypc/100.0 ; sizex /= 10000.0 ; sizey /= 10000.0 ; if ( !print_color ) { StdProgWText( wprog, 0, msg[MSG_DOGDOSIMG] ) ; strcpy(nom, "VSCRAP.IMG") ; if ( img_sauve( nom, &src, &dlg_user_data.info, wprog ) ) { if ( dither_mono || dlg_user_data.filename[0] || dlg_user_data.rotate90 ) free( src.fd_addr ) ; if ( dlg_user_data.filename[0] && dlg_user_data.info.palette ) free( dlg_user_data.info.palette ) ; GWDestroyWindow( wprog ) ; v_clswk( print_handle ) ; return( PWRITERR ) ; } } else { INFO_IMAGE new_info ; MFDB new_img ; memcpy( &new_info, &dlg_user_data.info, sizeof(INFO_IMAGE) ) ; memcpy( &new_img, &src, sizeof(MFDB) ) ; if ( new_img.fd_nplanes <= 8 ) { new_info.nb_cpal = 0 ; new_info.palette = NULL ; new_info.nplans = 16 ; new_img.fd_addr = NULL ; new_img.fd_nplanes = 16 ; StdProgWText( wprog, 0, msg[MSG_DOGDOSIMG] ) ; if ( index2truecolor( &src, &dlg_user_data.info, &new_img, wprog ) != 0 ) { if ( dither_mono || dlg_user_data.filename[0] || dlg_user_data.rotate90 ) free( src.fd_addr ) ; if ( dlg_user_data.filename[0] && dlg_user_data.info.palette ) free( dlg_user_data.info.palette ) ; v_clswk( print_handle ) ; GWDestroyWindow( wprog ) ; return( PWRITERR ) ; } } strcpy( nom, "VSCRAP.TGA" ) ; if ( targa_sauve( nom, &new_img, &new_info, wprog ) ) { if ( dither_mono || dlg_user_data.filename[0] || dlg_user_data.rotate90 ) free( src.fd_addr ) ; if ( dlg_user_data.filename[0] && dlg_user_data.info.palette ) free( dlg_user_data.info.palette ) ; v_clswk( print_handle ) ; GWDestroyWindow( wprog ) ; return( PWRITERR ) ; } if ( src.fd_nplanes <= 8 ) free( new_img.fd_addr ) ; } if ( dither_mono || dlg_user_data.filename[0] || dlg_user_data.rotate90 ) free( src.fd_addr ) ; if ( dlg_user_data.filename[0] && dlg_user_data.info.palette ) free( dlg_user_data.info.palette ) ; StdProgWText( wprog, 0, msg[MSG_PRINTING] ) ; vst_unload_fonts( handle, 0 ) ; xoffset = (int) (10000.0*dlg_user_data.posx/ptpx) ; yoffset = (int) (10000.0*dlg_user_data.posy/ptpy) ; xyarray[0] = xoffset ; xyarray[1] = yoffset ; xyarray[2] = xoffset+(int) (10000.0*sizex/ptpx) ; xyarray[3] = yoffset+(int) (10000.0*sizey/ptpy) ; mouse_busy() ; vs_page_info(print_handle, APPL, MENU_NAME) ; vs_page_info(print_handle, DOC, nom) ; vs_page_info(print_handle, CREAT, "") ; vs_page_info(print_handle, REM, "Thanks to Thierry Rodolfo !" ) ; if (dither_mono) v_bit_image(print_handle, nom, 0, INTEGER, INTEGER, 0, 0, xyarray) ; else v_bit_image(print_handle, nom, 0, FRACTIONAL, FRACTIONAL, 0, 0, xyarray) ; v_updwk(print_handle) ; v_clrwk(print_handle) ; v_clswk(print_handle) ; vst_load_fonts(handle, 0) ; mouse_restore() ; unlink(nom) ; GWDestroyWindow( wprog ) ; return( 0 ) ; }
void small_scale_draw(ALWINDOW *alw, CURRENT_STATUS *cs) { register int loop1,loop2; int cf; short coord[4]; register int curx,cury; int inc_res; int half_fret_height=frets_height/2,half_fret_length=frets_length/2; register int circle_radius; int h,saveh; int tadd; short ch,cw,clh,clw,maxcw; char albuff[10]; char info_buffer[120]; int combination_note,note_val; int frets_x_offset_and_frets_length; int half_fret_height_and_frets_y_offset; int frets_height_and_frets_y_offset; int frets_length_times_loop2; int frets_height_times_7; short tatts[10]; /* text attributes */ NOTE *np; #ifdef PRINTER_TEST /* gdos test stuff*/ short work_in[11],work_out[57],thandle,lop; #endif #define draw(X1,Y1,X2,Y2); coord[0]=X1;coord[1]=Y1;coord[2]=X2;coord[3]=Y2;v_pline(handle,2,coord); #ifdef PRINTER_TEST if(vq_gdos()==0) fatal_error("GDOS NOT LOADED!"); #endif #ifndef PRINTER_TEST if(scale_name_flag && !key_name_flag) { sprintf(info_buffer," %s",cs->current_scale->name); wind_info(scale_window.handle,info_buffer); } else { if(!scale_name_flag && key_name_flag) { sprintf(info_buffer," %s",cs->key->note_name); wind_info(scale_window.handle,info_buffer); } else { if(scale_name_flag && key_name_flag) { sprintf(info_buffer," %s in %s",cs->current_scale->name,cs->key->note_name); wind_info(scale_window.handle,info_buffer); } else { sprintf(info_buffer," "); wind_info(scale_window.handle,info_buffer); } } } #endif scale_offsets(alw,&frets_x_offset,&frets_y_offset); frets_y_offset=frets_y_offset+big_y_offset; frets_height_and_frets_y_offset=frets_height+frets_y_offset; frets_x_offset_and_frets_length=frets_length+frets_x_offset; half_fret_height_and_frets_y_offset=half_fret_height+frets_y_offset; #ifndef PRINTER_TEST h=0;cw=0;ch=0;maxcw=0; while(cw<((frets_length/2)-2) && h<99) { if(cw>maxcw) saveh=h; h++; vst_height(handle,h,&cw,&ch,&clw,&clh); } set_hor(); if(h>=99) vst_height(handle,saveh,&cw,&ch,&clw,&clh); #endif #ifdef PRINTER_TEST clh=0; #endif vqt_attributes(handle,tatts); frets_height_times_7=7*frets_height; total_y_dist=clh+(frets_height_times_7); set_ver(total_y_dist); if(frets_length>frets_height) circle_radius=(frets_height/2)-1-2; else circle_radius=(frets_length/2)-1-2; curx=0; #ifdef PRINTER_TEST work_in[0]=21; /*printer ?*/ for(lop=1;lop<10;lop++) work_in[lop]=1; work_in[10]=2; for(lop=21;lop<31;lop++) { work_in[0]=lop; v_opnwk(work_in,&handle,work_out); if(handle) { error("GOT A PRINTER HANDLE"); lop=32; } else error("NOT GOT A PRINTER HANDLE"); } #endif wclip(alw); graf_mouse(M_OFF,NULL); for(loop2=0;loop2<global_frets && loop2+start_fret<global_frets;loop2++) { frets_length_times_loop2=frets_length*loop2; for(loop1=0;loop1<6;loop1++) { if(curx<desk_x+frets_height) { cf=loop2+start_fret; curx=/*alw->wx+*/(frets_length_times_loop2); cury=/*alw->wy+*/(loop1*frets_height); if(cf!=0) { draw(curx+frets_x_offset,cury+half_fret_height_and_frets_y_offset, curx+frets_x_offset_and_frets_length,cury+half_fret_height_and_frets_y_offset); } switch(loop1) { case 0: draw(curx+frets_x_offset_and_frets_length,cury+frets_y_offset+half_fret_height, curx+frets_x_offset_and_frets_length,cury+frets_height_and_frets_y_offset); break; case 5: draw(curx+frets_x_offset_and_frets_length,cury+frets_y_offset, curx+frets_x_offset_and_frets_length,cury+half_fret_height_and_frets_y_offset); break; default: draw(curx+frets_x_offset_and_frets_length,cury+frets_y_offset, curx+frets_x_offset_and_frets_length,cury+frets_height_and_frets_y_offset); } #ifndef PRINTER_TEST if(numbers_flag==1) { if(cf==first_fret || (((inc_res=cf%fret_inc)==0) && cf>first_fret)) { if((tadd=clh-frets_height)>0) { sprintf(albuff,"%d",cf); if(strlen(albuff)==1) v_gtext(handle,frets_x_offset+(frets_length_times_loop2)+half_fret_length-(tatts[6]/2),frets_y_offset+(frets_height_times_7)+tadd,albuff); else v_gtext(handle,frets_x_offset+(frets_length_times_loop2)+half_fret_length-tatts[6],frets_y_offset+(frets_height_times_7)+tadd,albuff); } else { sprintf(albuff,"%d",cf); if(strlen(albuff)==1) v_gtext(handle,frets_x_offset+(frets_length_times_loop2)+half_fret_length-(tatts[6]/2),frets_y_offset+(frets_height_times_7),albuff); else v_gtext(handle,frets_x_offset+(frets_length_times_loop2)+half_fret_length-tatts[6], frets_y_offset+(frets_height_times_7),albuff); } } } #endif if(text_notes==1) { combination_note=0; if(cs->display_fretboard[loop1][cf]>RELATIVE_NOTE) { combination_note=1; note_val=cs->display_fretboard[loop1][cf]-RELATIVE_NOTE; } else { note_val=cs->display_fretboard[loop1][cf]; } switch(note_val) { case NO_NOTE: break; case NORMAL_NOTE: if(combination_note) vst_effects(handle,0|UNDERLINED); else vst_effects(handle,0); break; case FILLED_NOTE: if(combination_note) vst_effects(handle,OUTLINE|UNDERLINED); else vst_effects(handle,OUTLINE); break; case RELATIVE_NOTE: vst_effects(handle,SHADED|UNDERLINED); break; } /* draw as text */ if(cs->display_fretboard[loop1][cf]!=NO_NOTE) { np=cs->current_fretboard[loop1][cf]; sprintf(albuff,"%s",np->note_name); if(strlen(albuff)==1) v_gtext(handle,frets_x_offset+frets_length_times_loop2+half_fret_length-(tatts[6]/2), cury+half_fret_height_and_frets_y_offset+(tatts[7]/2)/*cury+frets_y_offset+frets_height*/,albuff); else v_gtext(handle,/*curx+frets_x_offset*/frets_x_offset+(frets_length_times_loop2)+half_fret_length-tatts[6], cury+half_fret_height_and_frets_y_offset+(tatts[7]/2)/*cury+frets_y_offset+frets_height*/,albuff); } vst_effects(handle,0); } else { combination_note=0; if(cs->display_fretboard[loop1][cf]>RELATIVE_NOTE) { combination_note=1; note_val=cs->display_fretboard[loop1][cf]-RELATIVE_NOTE; } else { note_val=cs->display_fretboard[loop1][cf]; } if(combination_note) { vsf_color(handle,BLACK); vsf_interior(handle,FIS_HOLLOW); vsf_style(handle,0); alcircle(handle, curx+half_fret_length+frets_x_offset, cury+half_fret_height+frets_y_offset, circle_radius+2); vsf_color(handle,BLACK); vsf_interior(handle,8); vsf_style(handle,2); } switch(note_val) { case NO_NOTE: break; case NORMAL_NOTE: vsf_color(handle,BLACK); vsf_interior(handle,2); vsf_style(handle,2); alcircle(handle, curx+half_fret_length+frets_x_offset, cury+half_fret_height_and_frets_y_offset, circle_radius); vsf_color(handle,BLACK); vsf_interior(handle,8); vsf_style(handle,2); break; case FILLED_NOTE: vsf_color(handle,BLACK); vsf_interior(handle,FIS_SOLID); vsf_style(handle,2); alcircle(handle, curx+half_fret_length+frets_x_offset, cury+half_fret_height_and_frets_y_offset, circle_radius); vsf_color(handle,BLACK); break; case RELATIVE_NOTE: vsf_color(handle,BLACK); vsf_interior(handle,FIS_HOLLOW); vsf_style(handle,2); alcircle(handle, curx+half_fret_length+frets_x_offset, cury+half_fret_height_and_frets_y_offset, circle_radius); vsf_color(handle,BLACK); vsf_interior(handle,8); vsf_style(handle,2); break; /* case COMMON_NOTE: vsf_color(handle,BLACK); vsf_interior(handle,4); vsf_style(handle,2); alcircle(handle, curx+half_fret_length+frets_x_offset, cury+half_fret_height_and_frets_y_offset, circle_radius); vsf_color(handle,BLACK); vsf_interior(handle,8); vsf_style(handle,2); break;*/ } } } } } graf_mouse(M_ON,NULL); #ifdef PRINTER_TEST v_clswk(handle); #endif }