int vfo_update(void *data) { BANDSTACK_ENTRY* entry=bandstack_entry_get_current(); FILTER* band_filters=filters[entry->mode]; FILTER* band_filter=&band_filters[entry->filter]; if(vfo_surface) { cairo_t *cr; cr = cairo_create (vfo_surface); cairo_set_source_rgb (cr, 0, 0, 0); cairo_paint (cr); cairo_select_font_face(cr, "Arial", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); //cairo_set_font_size(cr, 36); cairo_set_font_size(cr, 28); if(isTransmitting()) { cairo_set_source_rgb(cr, 1, 0, 0); } else { cairo_set_source_rgb(cr, 0, 1, 0); } long long f=entry->frequencyA+ddsOffset; char sf[32]; //sprintf(sf,"%0lld.%06lld MHz",entry->frequencyA/(long long)1000000,entry->frequencyA%(long long)1000000); sprintf(sf,"%0lld.%06lld MHz",f/(long long)1000000,f%(long long)1000000); cairo_move_to(cr, 5, 30); cairo_show_text(cr, sf); cairo_set_font_size(cr, 12); cairo_move_to(cr, (my_width/2)+40, 30); //cairo_show_text(cr, getFrequencyInfo(entry->frequencyA)); cairo_show_text(cr, getFrequencyInfo(f)); sprintf(sf,"Step %dHz",step); cairo_move_to(cr, (my_width/2)+40, 15); cairo_show_text(cr, sf); if(locked) { cairo_set_source_rgb(cr, 1, 0, 0); cairo_move_to(cr, 10, 50); cairo_show_text(cr, "Locked"); } if(function) { cairo_set_source_rgb(cr, 1, 0.5, 0); cairo_move_to(cr, 70, 50); cairo_show_text(cr, "Function"); } cairo_set_source_rgb(cr, 1, 1, 0); cairo_move_to(cr, 130, 50); cairo_show_text(cr, mode_string[entry->mode]); cairo_move_to(cr, 190, 50); cairo_show_text(cr, band_filter->title); cairo_move_to(cr, 250, 50); if(nr) { cairo_show_text(cr, "NR"); } if(nr2) { cairo_show_text(cr, "NR2"); } if(nb) { cairo_show_text(cr, "NB"); } if(nb2) { cairo_show_text(cr, "NB2"); } if(anf) { cairo_show_text(cr, "ANF"); } if(snb) { cairo_show_text(cr, "SNB"); } cairo_move_to(cr, 310, 50); switch(agc) { case AGC_OFF: cairo_show_text(cr, "AGC OFF"); break; case AGC_LONG: cairo_show_text(cr, "AGC LONG"); break; case AGC_SLOW: cairo_show_text(cr, "AGC SLOW"); break; case AGC_MEDIUM: cairo_show_text(cr, "AGC MEDIUM"); break; case AGC_FAST: cairo_show_text(cr, "AGC FAST"); break; } cairo_destroy (cr); gtk_widget_queue_draw (vfo); } else { fprintf(stderr,"vfo_update: no surface!\n"); } return 0; }
int vfo_update(void *data) { BANDSTACK_ENTRY* entry=bandstack_entry_get_current(); FILTER* band_filters=filters[entry->mode]; FILTER* band_filter=&band_filters[entry->filter]; if(vfo_surface) { cairo_t *cr; cr = cairo_create (vfo_surface); cairo_set_source_rgb (cr, 0, 0, 0); cairo_paint (cr); cairo_select_font_face(cr, "FreeMono", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); char version[16]; char text[128]; if(radio->protocol==ORIGINAL_PROTOCOL) { sprintf(version,"%d.%d", radio->software_version/10, radio->software_version%10); } else { sprintf(version,"%d.%d.%d", radio->software_version/100, (radio->software_version%100)/10, radio->software_version%10); } switch(radio->protocol) { case ORIGINAL_PROTOCOL: case NEW_PROTOCOL: sprintf(text,"%s %s %s", radio->name, version, inet_ntoa(radio->info.network.address.sin_addr)); break; #ifdef LIMESDR case LIMESDR_PROTOCOL: sprintf(text,"%s\n", radio->name); break; #endif } cairo_set_source_rgb(cr, 0.5, 0.5, 0.5); cairo_set_font_size(cr, 10); cairo_move_to(cr, 5, 15); cairo_show_text(cr, text); long long f=entry->frequencyA+ddsOffset; char sf[32]; sprintf(sf,"%0lld.%06lld MHz",f/(long long)1000000,f%(long long)1000000); cairo_set_font_size(cr, 28); if(isTransmitting()) { cairo_set_source_rgb(cr, 1, 0, 0); } else { cairo_set_source_rgb(cr, 0, 1, 0); } cairo_move_to(cr, 5, 38); cairo_show_text(cr, sf); cairo_set_font_size(cr, 12); if(rit==0) { cairo_set_source_rgb(cr, 0.5, 0.5, 0.5); } else { cairo_set_source_rgb(cr, 0, 1, 0); } sprintf(sf,"RIT: %d Hz",rit); cairo_move_to(cr, (my_width/4)*3, 38); cairo_show_text(cr, sf); cairo_set_source_rgb(cr, 0, 1, 0); int s=0; while(steps[s]!=step && steps[s]!=0) { s++; } sprintf(sf,"Step %s",step_labels[s]); cairo_move_to(cr, my_width/2, 15); cairo_show_text(cr, sf); cairo_move_to(cr, (my_width/4)*3, 15); cairo_show_text(cr, getFrequencyInfo(f)); if(locked) { cairo_set_source_rgb(cr, 1, 0, 0); cairo_move_to(cr, 10, 50); cairo_show_text(cr, "Locked"); } if(function) { cairo_set_source_rgb(cr, 1, 0.5, 0); cairo_move_to(cr, 70, 50); cairo_show_text(cr, "Function"); } cairo_set_source_rgb(cr, 1, 1, 0); cairo_move_to(cr, 130, 50); cairo_show_text(cr, mode_string[entry->mode]); cairo_move_to(cr, 190, 50); cairo_show_text(cr, band_filter->title); cairo_move_to(cr, 250, 50); if(nr) { cairo_show_text(cr, "NR"); } if(nr2) { cairo_show_text(cr, "NR2"); } if(nb) { cairo_show_text(cr, "NB"); } if(nb2) { cairo_show_text(cr, "NB2"); } if(anf) { cairo_show_text(cr, "ANF"); } if(snb) { cairo_show_text(cr, "SNB"); } cairo_move_to(cr, 310, 50); switch(agc) { case AGC_OFF: cairo_show_text(cr, "AGC OFF"); break; case AGC_LONG: cairo_show_text(cr, "AGC LONG"); break; case AGC_SLOW: cairo_show_text(cr, "AGC SLOW"); break; case AGC_MEDIUM: cairo_show_text(cr, "AGC MEDIUM"); break; case AGC_FAST: cairo_show_text(cr, "AGC FAST"); break; } cairo_destroy (cr); gtk_widget_queue_draw (vfo); } else { fprintf(stderr,"vfo_update: no surface!\n"); } return 0; }