void START::init_text(wchar_t **name_text,int num_start,int num_prompt) { _num_start = num_start; //记录字符串数量 _num_prompt = num_prompt; D3DXMatrixScaling(&_scale_text,_scale_text_date / 4,_scale_text_date,_scale_text_date); D3DXMatrixRotationAxis(&_rotation_text,&D3DXVECTOR3(0,1,0),_angle_text); HDC hdc = CreateCompatibleDC( 0 ); //创建设备环境,hdc为windows设置环境的句柄 HFONT hFont; HFONT hFontOld; LOGFONT lf; ZeroMemory(&lf, sizeof(LOGFONT)); //描述字体信息 lf.lfHeight = 200; // lf.lfWidth = 200; // lf.lfEscapement = 0; lf.lfOrientation = 0; lf.lfWeight = 1000; // boldness, range 0(light) - 1000(bold) lf.lfItalic = false; //斜体 lf.lfUnderline = false; //下划线 lf.lfStrikeOut = false; lf.lfCharSet = DEFAULT_CHARSET; lf.lfOutPrecision = 0; lf.lfClipPrecision = 0; lf.lfQuality = 0; lf.lfPitchAndFamily = 0; wcscpy(lf.lfFaceName,L"宋体"); //字体 //创建字体 hFont = CreateFontIndirect(&lf); hFontOld = (HFONT)SelectObject(hdc, hFont); //将字体选入设备环境,并记录原字体 //创建字体网格 _text_start = new TEXT_STRUCT[num_start]; _text_prompt = new TEXT_STRUCT[num_prompt]; for(int i = 0;i < num_start + num_prompt;i++) { if(i < num_start) { create_text(&_text_start[i],name_text[i],hdc,i); //创建开始游戏网格以及包装球 } else { //i对应着名称的后半部分 create_text(&_text_prompt[i - num_start],name_text[i],hdc,i - num_start); //创建提示字体网格以及包装球 } } SelectObject(hdc, hFontOld); //选入原字体 DeleteObject( hFont ); //释放字体资源 DeleteDC( hdc ); //释放设备环境 D3DXCreateTextureFromFileA(_device, "陆雪琪(修改).jpg", //从pMtrBuffer得到起始地址 &_textures); //存储纹理 }
int main (int argc, char **argv) { GtkWidget *window; GtkWidget *notebook; GtkWidget *hbox; GtkWidget *tree; GtkTextTag *tag; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); hbox = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (window), hbox); tree = create_tree (); gtk_box_pack_start (GTK_BOX (hbox), tree, FALSE, FALSE, 0); notebook = gtk_notebook_new (); gtk_box_pack_start (GTK_BOX (hbox), notebook, TRUE, TRUE, 0); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), create_text (&info_buffer, FALSE), gtk_label_new ("Info")); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), create_text (&source_buffer, TRUE), gtk_label_new ("Source")); tag = gtk_text_buffer_create_tag (info_buffer, "title"); gtk_object_set (GTK_OBJECT (tag), "font", "Sans 18", NULL); tag = gtk_text_buffer_create_tag (info_buffer, "source"); gtk_object_set (GTK_OBJECT (tag), "font", "Courier 10", "pixels_above_lines", 0, "pixels_below_lines", 0, NULL); gtk_window_set_default_size (GTK_WINDOW (window), 600, 400); gtk_widget_show_all (window); load_file (testgtk_demos[0].filename); gtk_main (); return 0; }
int main (int argc, char **argv) { GtkWidget *window; GtkWidget *hbox; GtkWidget *tree; /* Most code in gtk-demo is intended to be exemplary, but not * these few lines, which are just a hack so gtk-demo will work * in the GTK tree without installing it. */ if (g_file_test ("../../modules/input/immodules.cache", G_FILE_TEST_EXISTS)) { g_setenv ("GTK_IM_MODULE_FILE", "../../modules/input/immodules.cache", TRUE); } /* -- End of hack -- */ gtk_init (&argc, &argv); setup_default_icon (); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "GTK+ Code Demos"); g_signal_connect_after (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add (GTK_CONTAINER (window), hbox); tree = create_tree (); gtk_box_pack_start (GTK_BOX (hbox), tree, FALSE, FALSE, 0); notebook = gtk_notebook_new (); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook), TRUE); gtk_box_pack_start (GTK_BOX (hbox), notebook, TRUE, TRUE, 0); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), create_text (&info_view, FALSE), gtk_label_new_with_mnemonic ("_Info")); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), create_text (&source_view, TRUE), gtk_label_new_with_mnemonic ("_Source")); gtk_window_set_default_size (GTK_WINDOW (window), 600, 400); gtk_widget_show_all (window); load_file (gtk_demos[0].name, gtk_demos[0].filename); gtk_main (); return 0; }
static void client_add_pause_chatter_intern( GuiWidget *list, char *string, int info ) { int i, j; static Text *text; /* build new text */ text = create_text( string, 52 ); /* move old lines up */ for ( i = 0; i < CHAT_LINE_COUNT - text->count; i++ ) strcpy( pause_chatter[i], pause_chatter[i + text->count] ); /* copy new lines */ for ( j = 0, i = CHAT_LINE_COUNT - text->count; i < CHAT_LINE_COUNT; i++, j++ ) { if ( info ) { strcpy( pause_chatter[i] + 1, text->lines[j] ); pause_chatter[i][0] = '!'; } else if ( j > 0 ) { strcpy( pause_chatter[i] + 3 + info, text->lines[j] ); pause_chatter[i][0] = ' '; pause_chatter[i][1] = ' '; pause_chatter[i][2] = ' '; } else strcpy( pause_chatter[i], text->lines[j] ); } /* free memory */ delete_text( text ); /* update gui */ gui_list_update( list, CHAT_LINE_COUNT ); }
void t_campaign_selection_dialog::initialize() { m_layout = g_layout.get(); // std::fill( m_enabled, m_enabled + ELEMENTS_OF( m_enabled ), true ); m_campaign_id = k_standard_campaign_none; ////////////////////////////////////////////////////////////////// // find dimensions & center t_screen_point origin(0,0); t_bitmap_layer const* layer = m_layout->find( "background" ); t_screen_rect rect = layer->get_rect(); set_bitmap( layer ); rect += t_screen_point( (get_parent()->get_width() - rect.width()) / 2, (get_parent()->get_height() - rect.height()) / 2 ); move( rect ); set_drop_shadow(); ////////////////////////////////////////////////////////////////// // add title t_text_window* window; layer = m_layout->find( "title" ); rect = layer->get_rect(); window = new t_text_window( get_font( rect.height() ), rect, this, k_score_title, t_pixel_24(0,0,0) ); window->set_center_horizontal(); window->set_center_vertical(); window->set_drop_shadow( true, t_pixel_24(200,200,200)); create_text(); create_buttons(); create_icons(); }
static void update_slider_value(GuiObject * slid) { GuiObject *text; GuiWindow *win; check_object(slid, "slid", "update_slider_value"); text = slid->next; check_object(text, "text", "update_slider_value"); win = slid->win; check_window(win, "update_slider_value"); if (slid->max_value <= 2) sprintf(text->label, "%0.2f", slid->position / (float) (slid->slider_length - 1) * slid->max_value); else if (slid->max_value <= 10) sprintf(text->label, "%0.1f", slid->position / (float) (slid->slider_length - 1) * slid->max_value); else sprintf(text->label, "%0.0f", slid->position / (float) (slid->slider_length - 1) * slid->max_value); win_fillbox(win, text->x, text->y, text->width, text->height, text->bg_col1); text->x = slid->x_min - string_length(text->label) / 2 + slid_width / 2 - 1; create_text(text); update_text(text); }
int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *vpaned; GtkWidget *list; GtkWidget *text; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Paned Windows"); gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_main_quit), NULL); gtk_container_border_width (GTK_CONTAINER (window), 10); /* vpaned widget을 만들어서 toplevel 윈도에 더한다. */ vpaned = gtk_vpaned_new (); gtk_container_add (GTK_CONTAINER(window), vpaned); gtk_widget_show (vpaned); /* 이제 윈도 두 부분의 내용을 만든다. */ list = create_list (); gtk_paned_add1 (GTK_PANED(vpaned), list); gtk_widget_show (list); text = create_text (); gtk_paned_add2 (GTK_PANED(vpaned), text); gtk_widget_show (text); gtk_widget_show (window); gtk_main (); return 0; }
mxml_node * node_identify( void * doc, const mxml_char_t * str, parsing_context *ctx ) { mxml_node * doc_node = (mxml_node *)doc; mxml_node * ident_node = NULL; UNUSED_ARG( ctx ); if ( !doc_node ) return NULL; if ( is_declaration ( str ) ) ident_node = create_declaration( doc_node ); else if ( is_comment( str ) ) ident_node = create_comment( doc_node ); else if ( is_unknown( str ) ) ident_node = create_unknown( doc_node ); else if ( is_element( str ) ) ident_node = create_element( XML_T(""), doc_node ); else if ( is_text( str ) ) ident_node = create_text( doc_node ); else ident_node = create_unknown( doc_node ); return ident_node; }
static void test_synthesized(void) { HGLOBAL h, htext; HENHMETAFILE emf; BOOL r; UINT cf; HANDLE data; htext = create_text(); emf = create_emf(); r = OpenClipboard(NULL); ok(r, "gle %d\n", GetLastError()); r = EmptyClipboard(); ok(r, "gle %d\n", GetLastError()); h = SetClipboardData(CF_TEXT, htext); ok(h == htext, "got %p\n", h); h = SetClipboardData(CF_ENHMETAFILE, emf); ok(h == emf, "got %p\n", h); r = CloseClipboard(); ok(r, "gle %d\n", GetLastError()); r = OpenClipboard(NULL); ok(r, "gle %d\n", GetLastError()); cf = EnumClipboardFormats(0); ok(cf == CF_TEXT, "cf %08x\n", cf); data = GetClipboardData(cf); ok(data != NULL, "couldn't get data, cf %08x\n", cf); cf = EnumClipboardFormats(cf); ok(cf == CF_ENHMETAFILE, "cf %08x\n", cf); data = GetClipboardData(cf); ok(data != NULL, "couldn't get data, cf %08x\n", cf); cf = EnumClipboardFormats(cf); todo_wine ok(cf == CF_LOCALE, "cf %08x\n", cf); if(cf == CF_LOCALE) cf = EnumClipboardFormats(cf); ok(cf == CF_OEMTEXT, "cf %08x\n", cf); data = GetClipboardData(cf); ok(data != NULL, "couldn't get data, cf %08x\n", cf); cf = EnumClipboardFormats(cf); ok(cf == CF_UNICODETEXT, "cf %08x\n", cf); cf = EnumClipboardFormats(cf); ok(cf == CF_METAFILEPICT, "cf %08x\n", cf); data = GetClipboardData(cf); todo_wine ok(data != NULL, "couldn't get data, cf %08x\n", cf); cf = EnumClipboardFormats(cf); ok(cf == 0, "cf %08x\n", cf); r = EmptyClipboard(); ok(r, "gle %d\n", GetLastError()); r = CloseClipboard(); ok(r, "gle %d\n", GetLastError()); }
/* ==================================================================== Select topic and display help text. ==================================================================== */ void client_handle_topic_list( GuiWidget *widget, GuiEvent *event ) { if ( event->type != GUI_ITEM_SELECTED ) return; if ( event->item.y >= client_topic_count ) return; gui_list_goto( list_help, 0 ); if ( client_help_text ) delete_text( client_help_text ); client_help_text = create_text( client_helps[event->item.y], 41 ); gui_list_update( list_help, client_help_text->count ); }
void extract_text(struct image *img) { int y, x, sx; CHAR *buf, *s; struct rgb rgb; struct component *c, *last_c = NULL; int shape; struct text *t, *last_t = NULL; buf = malloc(sizeof(CHAR)*img->w); if (!buf) croak(1, "extract_text:malloc(buf)"); for (y = 0; y < img->h; y++) { last_c = NULL; last_t = NULL; for (x = 0; x < img->w; x++) { s = buf; sx = x; while (img->d[y][x] != ' ' && component_marks->d[y][x] == ' ') { *s++ = img->d[y][x++]; } *s = '\0'; if (s != buf) { printf("%d,%d: |%s|\n", y, sx, buf); c = find_enclosing_component(&components, y, sx); if (is_color(buf, &rgb) && c) { double percepted_luminance = 1 - ( 0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b)/0xF; c->has_custom_background = 1; c->custom_background = rgb; if (percepted_luminance >= 0.5) c->white_text = 1; printf("COLOR %x%x%x\n", rgb.r, rgb.g, rgb.b); } else if (is_shape(buf, &shape) && c) { c->shape = shape; } else { if (last_t && last_c == c && sx > 0 && img->d[y][sx-1] == ' ' && last_t->x + last_t->len + 1 == sx) { extend_text(last_t, 1, buf); } else { t = create_text(y, sx, buf); TAILQ_INSERT_TAIL(c ? &c->text : &free_text, t, list); last_c = c; last_t = t; } } } } } free(buf); }
/** * Creates a label control * * @param label_path Path to find pic representing the label. * Loads the pic and draws it. */ Control* create_label(int x, int y, int i, int j, int width, int height, char* label_path) { SDL_Surface *img = load_image(label_path); if (img == NULL ) { img = create_text(label_path, width, height); if (img == NULL) { return 0; } } return create_control(x, y, i, j, width, height, NULL, img, empty_select, draw_leaf); }
/** * Creates a button control * * @param label_path Path to find pic representing the label. * @param children Controls needed when button is selected. * Could be the destination control or controls to be freed. * @param on_select Function to be called when the button is selected */ Control* create_button(int x, int y, int i, int j, int width, int height, char* label_path, int (*on_select)(struct Control*)) { SDL_Surface *img = load_image(label_path); if (img == NULL ) { // Could not load image - assume it is meant to be text img = create_text(label_path, width, height); if (img == NULL) { return 0; } } return create_control(x, y, i, j, width, height, NULL, img, on_select, draw_leaf); }
static void test_synthesized(void) { HGLOBAL h, htext; HENHMETAFILE emf; BOOL r; UINT cf; htext = create_text(); emf = create_emf(); r = OpenClipboard(NULL); ok(r, "gle %d\n", GetLastError()); r = EmptyClipboard(); ok(r, "gle %d\n", GetLastError()); h = SetClipboardData(CF_TEXT, htext); ok(h == htext, "got %p\n", h); h = SetClipboardData(CF_ENHMETAFILE, emf); ok(h == emf, "got %p\n", h); r = CloseClipboard(); ok(r, "gle %d\n", GetLastError()); r = OpenClipboard(NULL); ok(r, "gle %d\n", GetLastError()); cf = EnumClipboardFormats(0); ok(cf == CF_TEXT, "cf %08x\n", cf); cf = EnumClipboardFormats(cf); ok(cf == CF_ENHMETAFILE, "cf %08x\n", cf); cf = EnumClipboardFormats(cf); todo_wine ok(cf == CF_LOCALE, "cf %08x\n", cf); if(cf == CF_LOCALE) cf = EnumClipboardFormats(cf); ok(cf == CF_OEMTEXT, "cf %08x\n", cf); cf = EnumClipboardFormats(cf); ok(cf == CF_UNICODETEXT || broken(cf == CF_METAFILEPICT), /* win9x and winME has no CF_UNICODETEXT */ "cf %08x\n", cf); if(cf == CF_UNICODETEXT) cf = EnumClipboardFormats(cf); ok(cf == CF_METAFILEPICT, "cf %08x\n", cf); cf = EnumClipboardFormats(cf); ok(cf == 0, "cf %08x\n", cf); r = EmptyClipboard(); ok(r, "gle %d\n", GetLastError()); r = CloseClipboard(); ok(r, "gle %d\n", GetLastError()); }
/* ==================================================================== Confirm request. Darkens screen a bit and display text. Return Value: True if successful ==================================================================== */ void draw_confirm_screen( StkFont *font, SDL_Surface *buffer, char *str ) { int i, y, x; Text *text = create_text( str, 60 ); stk_surface_fill( stk_display, 0,0,-1,-1, 0x0 ); stk_surface_alpha_blit( buffer, 0,0,-1,-1, stk_display, 0,0, 128 ); font->align = STK_FONT_ALIGN_CENTER_X | STK_FONT_ALIGN_TOP; y = (stk_display->h - text->count * font->height) / 2; x = stk_display->w / 2; for ( i = 0; i < text->count; i++ ) { stk_font_write(font, stk_display, x, y, STK_OPAQUE, text->lines[i]); y += font->height; } delete_text( text ); }
void PrologRoot :: get_search_directories_from_environment (char * text) { text = getenv (text); if (text == NULL) return; char * area = create_text (text); char * end = area; while (* end != '\0') { if (* end == ';') * end = '\0'; end++; } char * cp = area; while (cp != end) { addSearchDirectory (cp); while (* cp != '\0' && cp != end) cp++; if (cp != end) cp++; } delete_text (area); }
void t_combat_results_dialog::initialize() { m_layout = g_layout.get(); m_creatures_lost_layout = k_creature_select_bitmaps.get(); ////////////////////////////////////////////////////////////////// // find dimensions & center t_screen_point origin(0,0); t_bitmap_layer const* layer = m_layout->find( "background" ); t_screen_rect rect = layer->get_rect(); set_bitmap( layer ); rect += t_screen_point( (get_parent()->get_width() - rect.width()) / 2, (get_parent()->get_height() - rect.height()) / 2 ); move( rect ); set_drop_shadow(); ////////////////////////////////////////////////////////////////// // add title std::string text; layer = m_layout->find( "title" ); rect = layer->get_rect(); m_title = new t_text_window( get_font( rect.height() ), rect, this, k_combat_results_title, t_pixel_24(0,0,0) ); m_title->set_center_horizontal(); m_title->set_center_vertical(); m_title->set_drop_shadow( true, t_pixel_24(200,200,200)); create_text(); create_icons(); create_buttons(); // add title // text = replace_keywords( k_text_combat_results_creatures, "%creatures", m_traits->plural_name ); // make it all upper case // std::transform( text.begin(), text.end(), text.begin(), toupper ); // m_title->set_text( text ); }
int main( int argc, char *argv[] ) { GtkWidget *window; GtkWidget *vpaned; GtkWidget *list; GtkWidget *text; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Paned Windows"); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); gtk_container_set_border_width (GTK_CONTAINER (window), 10); gtk_widget_set_size_request (GTK_WIDGET (window), 450, 400); /* create a vpaned widget and add it to our toplevel window */ vpaned = gtk_vpaned_new (); gtk_container_add (GTK_CONTAINER (window), vpaned); gtk_widget_show (vpaned); /* Now create the contents of the two halves of the window */ list = create_list (); gtk_paned_add1 (GTK_PANED (vpaned), list); gtk_widget_show (list); text = create_text (); gtk_paned_add2 (GTK_PANED (vpaned), text); gtk_widget_show (text); gtk_widget_show (window); gtk_main (); return 0; }
void t_score_dialog::initialize() { // calculate the final scores calculate_scores( m_map, m_winner_team, m_scores ); m_layout = g_layout.get(); m_difficulty_icons = g_difficulty_icons.get(); ////////////////////////////////////////////////////////////////// // find dimensions & center t_screen_point origin(0,0); t_bitmap_layer const* layer = m_layout->find( "background" ); t_screen_rect rect = layer->get_rect(); set_bitmap( layer ); rect += t_screen_point( (get_parent()->get_width() - rect.width()) / 2, (get_parent()->get_height() - rect.height()) / 2 ); move( rect ); set_drop_shadow(); ////////////////////////////////////////////////////////////////// // add title t_text_window* window; layer = m_layout->find( "title" ); rect = layer->get_rect(); window = new t_text_window( get_font( rect.height() ), rect, this, k_score_title, t_pixel_24(0,0,0) ); window->set_center_horizontal(); window->set_center_vertical(); window->set_drop_shadow( true, t_pixel_24(200,200,200)); create_text(); create_icons(); create_buttons(); }
/* gray screen and display a formatted text, directly update the * screen */ void display_text( StkFont *font, char *format, ... ) { int i, y, x; Text *text; char buf[512]; va_list args; va_start( args, format ); vsnprintf( buf, 512, format, args ); va_end( args ); stk_surface_gray( stk_display, 0,0,-1,-1, 2 ); text = create_text( buf, 60 ); font->align = STK_FONT_ALIGN_CENTER_X | STK_FONT_ALIGN_TOP; y = (stk_display->h - text->count * font->height) / 2; x = stk_display->w / 2; for ( i = 0; i < text->count; i++ ) { stk_font_write(font, stk_display, x, y, STK_OPAQUE, text->lines[i]); y += font->height; } delete_text( text ); stk_display_update( STK_UPDATE_ALL ); }
int CMp4File::create_media (CPlayerSession *psptr, int have_audio_driver, control_callback_vft_t *cc_vft) { uint video_count, video_offset; uint text_count, text_offset; uint audio_count, audio_offset; MP4TrackId trackId; video_query_t *vq; audio_query_t *aq; text_query_t *tq; uint ix; codec_plugin_t *plugin; int ret_value = 0; uint8_t *foo; u_int32_t bufsize; uint32_t verb = MP4GetVerbosity(m_mp4file); MP4SetVerbosity(m_mp4file, verb & ~(MP4_DETAILS_ERROR)); video_count = MP4GetNumberOfTracks(m_mp4file, MP4_VIDEO_TRACK_TYPE); audio_count = MP4GetNumberOfTracks(m_mp4file, MP4_AUDIO_TRACK_TYPE); text_count = MP4GetNumberOfTracks(m_mp4file, MP4_CNTL_TRACK_TYPE); mp4f_message(LOG_DEBUG, "cntl tracks %u", text_count); MP4SetVerbosity(m_mp4file, verb); if (video_count == 0 && audio_count == 0 && text_count == 0) { psptr->set_message("No audio, video or control tracks in file"); return -1; } if (video_count > 0) { vq = (video_query_t *)malloc(sizeof(video_query_t) * video_count); memset(vq, 0, sizeof(video_query_t) * video_count); } else { vq = NULL; } if (have_audio_driver && audio_count > 0) { aq = (audio_query_t *)malloc(sizeof(audio_query_t) * audio_count); memset(aq, 0, sizeof(audio_query_t) * audio_count); } else { aq = NULL; } if (text_count > 0) { tq = (text_query_t *)malloc(sizeof(text_query_t) * text_count); memset(tq, 0, sizeof(text_query_t) * text_count); } else { tq = NULL; } for (ix = 0, video_offset = 0; ix < video_count; ix++) { trackId = MP4FindTrackId(m_mp4file, ix, MP4_VIDEO_TRACK_TYPE); const char *media_data_name; media_data_name = MP4GetTrackMediaDataName(m_mp4file, trackId); // for now, treat mp4v and encv the same vq[video_offset].track_id = trackId; vq[video_offset].stream_type = STREAM_TYPE_MP4_FILE; vq[video_offset].compressor = media_data_name; if (strcasecmp(media_data_name, "mp4v") == 0 || strcasecmp(media_data_name, "encv") == 0) { uint8_t video_type = MP4GetTrackEsdsObjectTypeId(m_mp4file, trackId); uint8_t profileID = MP4GetVideoProfileLevel(m_mp4file, trackId); mp4f_message(LOG_DEBUG, "MP4 - got track %x profile ID %d", trackId, profileID); MP4SetVerbosity(m_mp4file, verb & ~(MP4_DETAILS_ERROR)); MP4GetTrackESConfiguration(m_mp4file, trackId, &foo, &bufsize); MP4SetVerbosity(m_mp4file, verb); vq[video_offset].type = video_type; vq[video_offset].profile = profileID; vq[video_offset].fptr = NULL; vq[video_offset].config = foo; vq[video_offset].config_len = bufsize; } else if (strcasecmp(media_data_name, "avc1") == 0) { uint8_t profile, level; uint8_t **seqheader, **pictheader; uint32_t *pictheadersize, *seqheadersize; uint32_t ix; MP4GetTrackH264ProfileLevel(m_mp4file, trackId, &profile, &level); MP4GetTrackH264SeqPictHeaders(m_mp4file, trackId, &seqheader, &seqheadersize, &pictheader, &pictheadersize); bufsize = 0; for (ix = 0; seqheadersize[ix] != 0; ix++) { bufsize += seqheadersize[ix] + 4; } for (ix = 0; pictheadersize[ix] != 0; ix++) { bufsize += pictheadersize[ix] + 4; } foo = (uint8_t *)malloc(bufsize + 4); memset(foo, 0, bufsize + 4); uint32_t copied = 0; // headers do not have the byte stream start code stored in the file for (ix = 0; seqheadersize[ix] != 0; ix++) { foo[copied] = 0; foo[copied + 1] = 0; foo[copied + 2] = 0; foo[copied + 3] = 1; copied += 4; // add header memcpy(foo + copied, seqheader[ix], seqheadersize[ix]); copied += seqheadersize[ix]; free(seqheader[ix]); } free(seqheader); free(seqheadersize); for (ix = 0; pictheadersize[ix] != 0; ix++) { foo[copied] = 0; foo[copied + 1] = 0; foo[copied + 2] = 0; foo[copied + 3] = 1; copied += 4; // add header memcpy(foo + copied, pictheader[ix], pictheadersize[ix]); copied += pictheadersize[ix]; free(pictheader[ix]); } free(pictheader); free(pictheadersize); vq[video_offset].type = level; vq[video_offset].profile = profile; vq[video_offset].fptr = NULL; vq[video_offset].config = foo; vq[video_offset].config_len = bufsize; } else { MP4GetTrackVideoMetadata(m_mp4file, trackId, &foo, &bufsize); vq[video_offset].config = foo; vq[video_offset].config_len = bufsize; } plugin = check_for_video_codec(vq[video_offset].stream_type, vq[video_offset].compressor, NULL, vq[video_offset].type, vq[video_offset].profile, vq[video_offset].config, vq[video_offset].config_len, &config); if (plugin == NULL) { psptr->set_message("Can't find plugin for video %s type %d, profile %d", vq[video_offset].compressor, vq[video_offset].type, vq[video_offset].profile); m_illegal_video_codec++; ret_value = 1; // possibly memleak for foo here } else { vq[video_offset].h = MP4GetTrackVideoHeight(m_mp4file, trackId); vq[video_offset].w = MP4GetTrackVideoWidth(m_mp4file, trackId); vq[video_offset].frame_rate = MP4GetTrackVideoFrameRate(m_mp4file, trackId); vq[video_offset].enabled = 0; vq[video_offset].reference = NULL; video_offset++; } } audio_offset = 0; if (have_audio_driver) { for (ix = 0; ix < audio_count; ix++) { trackId = MP4FindTrackId(m_mp4file, ix, MP4_AUDIO_TRACK_TYPE); const char *media_data_name; media_data_name = MP4GetTrackMediaDataName(m_mp4file, trackId); aq[audio_offset].track_id = trackId; aq[audio_offset].stream_type = STREAM_TYPE_MP4_FILE; aq[audio_offset].compressor = media_data_name; if (strcasecmp(media_data_name, "mp4a") == 0 || strcasecmp(media_data_name, "enca") == 0) { uint8_t *userdata = NULL; u_int32_t userdata_size; aq[audio_offset].type = MP4GetTrackEsdsObjectTypeId(m_mp4file, trackId); MP4SetVerbosity(m_mp4file, verb & ~(MP4_DETAILS_ERROR)); aq[audio_offset].profile = MP4GetAudioProfileLevel(m_mp4file); MP4GetTrackESConfiguration(m_mp4file, trackId, &userdata, &userdata_size); MP4SetVerbosity(m_mp4file, verb); aq[audio_offset].config = userdata; aq[audio_offset].config_len = userdata_size; } plugin = check_for_audio_codec(aq[audio_offset].stream_type, aq[audio_offset].compressor, NULL, aq[audio_offset].type, aq[audio_offset].profile, aq[audio_offset].config, aq[audio_offset].config_len, &config); if (plugin != NULL) { aq[audio_offset].fptr = NULL; aq[audio_offset].sampling_freq = MP4GetTrackTimeScale(m_mp4file, trackId); MP4SetVerbosity(m_mp4file, verb & ~(MP4_DETAILS_ERROR)); aq[audio_offset].chans = MP4GetTrackAudioChannels(m_mp4file, trackId); MP4SetVerbosity(m_mp4file, verb); aq[audio_offset].enabled = 0; aq[audio_offset].reference = NULL; audio_offset++; m_have_audio = true; } else { m_illegal_audio_codec++; ret_value = 1; } } } else { if (audio_count) ret_value = 1; } text_offset = 0; for (ix = 0; ix < text_count; ix++) { trackId = MP4FindTrackId(m_mp4file, ix, MP4_CNTL_TRACK_TYPE); const char *media_data_name; media_data_name = MP4GetTrackMediaDataName(m_mp4file, trackId); tq[text_offset].track_id = trackId; tq[text_offset].stream_type = STREAM_TYPE_MP4_FILE; tq[text_offset].compressor = media_data_name; plugin = check_for_text_codec(tq[text_offset].stream_type, tq[text_offset].compressor, NULL, NULL, 0, &config); if (plugin != NULL) { tq[text_offset].fptr = NULL; tq[text_offset].enabled = 0; tq[text_offset].reference = NULL; text_offset++; } else { m_illegal_text_codec++; ret_value = 1; } } if (video_offset == 0 && audio_offset == 0 && text_offset == 0) { psptr->set_message("No playable codecs in mp4 file"); return -1; } if (cc_vft && cc_vft->media_list_query != NULL) { (cc_vft->media_list_query)(psptr, video_offset, vq, audio_offset, aq, text_offset, tq); } else { if (video_offset > 0) { vq[0].enabled = 1; } if (audio_offset > 0) { aq[0].enabled = 1; } if (text_offset > 0) { tq[0].enabled = 1; } } int vidret, audret, textret; uint start_desc = 1; vidret = create_video(psptr, vq, video_offset, start_desc); free(vq); if (vidret < 0) { free(aq); free(tq); return -1; } audret = create_audio(psptr, aq, audio_offset, start_desc); free(aq); textret = create_text(psptr, tq, text_offset, start_desc); free(tq); if (audret < 0 || textret < 0) ret_value = -1; char *name; verb = MP4GetVerbosity(m_mp4file); MP4SetVerbosity(m_mp4file, verb & ~(MP4_DETAILS_ERROR)); if (MP4GetMetadataName(m_mp4file, &name) && name != NULL) { psptr->set_session_desc(0, name); free(name); } MP4SetVerbosity(m_mp4file, verb); return (ret_value); }
int main(){ int i, tmp; tree_node *txt1, *txt2, *txt3; char *c; printf("starting \n"); txt1 = create_text(); txt2 = create_text(); txt3 = create_text(); append_line(txt1, "line one" ); if( (tmp = length_text(txt1)) != 1) { printf("Test 1: length should be 1, is %d\n", tmp); exit(-1); } append_line(txt1, "line hundred" ); insert_line(txt1, 2, "line ninetynine" ); insert_line(txt1, 2, "line ninetyeight" ); insert_line(txt1, 2, "line ninetyseven" ); insert_line(txt1, 2, "line ninetysix" ); insert_line(txt1, 2, "line ninetyfive" ); for( i = 2; i <95; i++ ) insert_line(txt1, 2, "some filler line between 1 and 95" ); if( (tmp = length_text(txt1)) != 100) { printf("Test 2: length should be 100, is %d\n", tmp); exit(-1); } printf("found at line 1: %s\n",get_line(txt1, 1)); printf("found at line 2: %s\n",get_line(txt1, 2)); printf("found at line 99: %s\n",get_line(txt1, 99)); printf("found at line 100: %s\n",get_line(txt1,100)); for(i=1; i<=10000; i++) { if( i%2==1 ) append_line(txt2, "A"); else append_line(txt2, "B"); } if( (tmp = length_text(txt2)) != 10000) { printf("Test 3: length should be 10000, is %d\n", tmp); exit(-1); } c = get_line(txt2, 9876 ); if( *c != 'B') { printf("Test 4: line 9876 of txt2 should be B, found %s\n", c); exit(-1); } for( i= 10000; i > 1; i-=2 ) { c = delete_line(txt2, i); if( *c != 'B') { printf("Test 5: line %d of txt2 should be B, found %s\n", i, c); exit(-1); } append_line( txt2, c ); } for( i=1; i<= 5000; i++ ) { c = get_line(txt2, i); if( *c != 'A') { printf("Test 6: line %d of txt2 should be A, found %s\n", i, c); exit(-1); } } for( i=1; i<= 5000; i++ ) delete_line(txt2, 1 ); for( i=1; i<= 5000; i++ ) { c = get_line(txt2, i); if( *c != 'B') { printf("Test 7: line %d of txt2 should be B, found %s\n", i, c); exit(-1); } } set_line(txt1, 100, "the last line"); for( i=99; i>=1; i-- ) delete_line(txt1, i ); printf("found at the last line: %s\n",get_line(txt1, 1)); for(i=0; i<1000000; i++) append_line(txt3, "line" ); if( (tmp = length_text(txt3)) != 1000000) { printf("Test 8: length should be 1000000, is %d\n", tmp); exit(-1); } for(i=0; i<500000; i++) delete_line(txt3, 400000 ); if( (tmp = length_text(txt3)) != 500000) { printf("Test 9: length should be 500000, is %d\n", tmp); exit(-1); } printf("End of tests\n"); return 0; }
static DWORD WINAPI clipboard_thread(void *param) { HWND win = param; BOOL r; HANDLE handle; UINT count, old_seq = 0, seq; if (pGetClipboardSequenceNumber) old_seq = pGetClipboardSequenceNumber(); EnterCriticalSection(&clipboard_cs); SetLastError(0xdeadbeef); next_wnd = SetClipboardViewer(win); ok(GetLastError() == 0xdeadbeef, "GetLastError = %d\n", GetLastError()); LeaveCriticalSection(&clipboard_cs); if (pAddClipboardFormatListener) { r = pAddClipboardFormatListener(win); ok( r, "AddClipboardFormatListener failed err %d\n", GetLastError()); } if (pGetClipboardSequenceNumber) { seq = pGetClipboardSequenceNumber(); ok( seq == old_seq, "sequence changed\n" ); } count = SendMessageA( win, WM_USER + 1, 0, 0 ); ok( count, "WM_DRAWCLIPBOARD received\n" ); count = SendMessageA( win, WM_USER+2, 0, 0 ); ok( !count, "WM_CLIPBOARDUPDATE received\n" ); r = OpenClipboard(win); ok(r, "OpenClipboard failed: %d\n", GetLastError()); if (pGetClipboardSequenceNumber) { seq = pGetClipboardSequenceNumber(); ok( seq == old_seq, "sequence changed\n" ); } count = SendMessageA( win, WM_USER+1, 0, 0 ); ok( !count, "WM_DRAWCLIPBOARD received\n" ); count = SendMessageA( win, WM_USER+2, 0, 0 ); ok( !count, "WM_CLIPBOARDUPDATE received\n" ); r = EmptyClipboard(); ok(r, "EmptyClipboard failed: %d\n", GetLastError()); if (pGetClipboardSequenceNumber) { seq = pGetClipboardSequenceNumber(); ok( (int)(seq - old_seq) > 0, "sequence unchanged\n" ); old_seq = seq; } count = SendMessageA( win, WM_USER+1, 0, 0 ); ok( !count, "WM_DRAWCLIPBOARD received\n" ); count = SendMessageA( win, WM_USER+2, 0, 0 ); ok( !count, "WM_CLIPBOARDUPDATE received\n" ); count = SendMessageA( win, WM_USER+3, 0, 0 ); ok( !count, "WM_DESTROYCLIPBOARD received\n" ); r = EmptyClipboard(); ok(r, "EmptyClipboard failed: %d\n", GetLastError()); /* sequence changes again, even though it was already empty */ if (pGetClipboardSequenceNumber) { seq = pGetClipboardSequenceNumber(); ok( (int)(seq - old_seq) > 0, "sequence unchanged\n" ); old_seq = seq; } count = SendMessageA( win, WM_USER+1, 0, 0 ); ok( !count, "WM_DRAWCLIPBOARD received\n" ); count = SendMessageA( win, WM_USER+2, 0, 0 ); ok( !count, "WM_CLIPBOARDUPDATE received\n" ); count = SendMessageA( win, WM_USER+3, 0, 0 ); ok( count, "WM_DESTROYCLIPBOARD not received\n" ); handle = SetClipboardData( CF_TEXT, create_text() ); ok(handle != 0, "SetClipboardData failed: %d\n", GetLastError()); if (pGetClipboardSequenceNumber) { seq = pGetClipboardSequenceNumber(); todo_wine ok( (int)(seq - old_seq) > 0, "sequence unchanged\n" ); old_seq = seq; } count = SendMessageA( win, WM_USER+1, 0, 0 ); ok( !count, "WM_DRAWCLIPBOARD received\n" ); count = SendMessageA( win, WM_USER+2, 0, 0 ); ok( !count, "WM_CLIPBOARDUPDATE received\n" ); SetClipboardData( CF_UNICODETEXT, 0 ); if (pGetClipboardSequenceNumber) { seq = pGetClipboardSequenceNumber(); todo_wine ok( (int)(seq - old_seq) > 0, "sequence unchanged\n" ); old_seq = seq; } count = SendMessageA( win, WM_USER+1, 0, 0 ); ok( !count, "WM_DRAWCLIPBOARD received\n" ); count = SendMessageA( win, WM_USER+2, 0, 0 ); ok( !count, "WM_CLIPBOARDUPDATE received\n" ); SetClipboardData( CF_UNICODETEXT, 0 ); /* same data again */ if (pGetClipboardSequenceNumber) { seq = pGetClipboardSequenceNumber(); todo_wine ok( (int)(seq - old_seq) > 0, "sequence unchanged\n" ); old_seq = seq; } count = SendMessageA( win, WM_USER+1, 0, 0 ); ok( !count, "WM_DRAWCLIPBOARD received\n" ); count = SendMessageA( win, WM_USER+2, 0, 0 ); ok( !count, "WM_CLIPBOARDUPDATE received\n" ); EnterCriticalSection(&clipboard_cs); r = CloseClipboard(); ok(r, "CloseClipboard failed: %d\n", GetLastError()); LeaveCriticalSection(&clipboard_cs); if (pGetClipboardSequenceNumber) { seq = pGetClipboardSequenceNumber(); ok( (int)(seq - old_seq) > 0, "sequence unchanged\n" ); old_seq = seq; } count = SendMessageA( win, WM_USER+1, 0, 0 ); ok( count, "WM_DRAWCLIPBOARD not received\n" ); count = SendMessageA( win, WM_USER+2, 0, 0 ); todo_wine ok( count || broken(!pAddClipboardFormatListener), "WM_CLIPBOARDUPDATE not received\n" ); r = OpenClipboard(win); ok(r, "OpenClipboard failed: %d\n", GetLastError()); if (pGetClipboardSequenceNumber) { seq = pGetClipboardSequenceNumber(); ok( seq == old_seq, "sequence changed\n" ); } count = SendMessageA( win, WM_USER+1, 0, 0 ); ok( !count, "WM_DRAWCLIPBOARD received\n" ); count = SendMessageA( win, WM_USER+2, 0, 0 ); ok( !count, "WM_CLIPBOARDUPDATE received\n" ); SetClipboardData( CF_WAVE, 0 ); if (pGetClipboardSequenceNumber) { seq = pGetClipboardSequenceNumber(); todo_wine ok( (int)(seq - old_seq) > 0, "sequence unchanged\n" ); old_seq = seq; } count = SendMessageA( win, WM_USER+1, 0, 0 ); ok( !count, "WM_DRAWCLIPBOARD received\n" ); count = SendMessageA( win, WM_USER+2, 0, 0 ); ok( !count, "WM_CLIPBOARDUPDATE received\n" ); r = CloseClipboard(); ok(r, "CloseClipboard failed: %d\n", GetLastError()); if (pGetClipboardSequenceNumber) { /* no synthesized format, so CloseClipboard doesn't change the sequence */ seq = pGetClipboardSequenceNumber(); todo_wine ok( seq == old_seq, "sequence changed\n" ); old_seq = seq; } count = SendMessageA( win, WM_USER+1, 0, 0 ); ok( count, "WM_DRAWCLIPBOARD not received\n" ); count = SendMessageA( win, WM_USER+2, 0, 0 ); todo_wine ok( count || broken(!pAddClipboardFormatListener), "WM_CLIPBOARDUPDATE not received\n" ); r = OpenClipboard(win); ok(r, "OpenClipboard failed: %d\n", GetLastError()); r = CloseClipboard(); ok(r, "CloseClipboard failed: %d\n", GetLastError()); /* nothing changed */ if (pGetClipboardSequenceNumber) { seq = pGetClipboardSequenceNumber(); ok( seq == old_seq, "sequence changed\n" ); } count = SendMessageA( win, WM_USER+1, 0, 0 ); ok( !count, "WM_DRAWCLIPBOARD received\n" ); count = SendMessageA( win, WM_USER+2, 0, 0 ); ok( !count, "WM_CLIPBOARDUPDATE received\n" ); r = OpenClipboard(0); ok(r, "OpenClipboard failed: %d\n", GetLastError()); r = EmptyClipboard(); ok(r, "EmptyClipboard failed: %d\n", GetLastError()); r = CloseClipboard(); ok(r, "CloseClipboard failed: %d\n", GetLastError()); r = PostMessageA(win, WM_USER, 0, 0); ok(r, "PostMessage failed: %d\n", GetLastError()); return 0; }
void window_load(){ create_counter(); create_text(); display_counter(); }
static void add_data_tab (const gchar *demoname) { gchar *resource_dir, *resource_name, *content_type, *content_mime; gchar **resources; GBytes *bytes; GtkWidget *widget, *label; guint i; resource_dir = g_strconcat ("/", demoname, NULL); resources = g_resources_enumerate_children (resource_dir, 0, NULL); if (resources == NULL) { g_free (resource_dir); return; } for (i = 0; resources[i]; i++) { resource_name = g_strconcat (resource_dir, "/", resources[i], NULL); bytes = g_resources_lookup_data (resource_name, 0, NULL); g_assert (bytes); content_type = g_content_type_guess (resource_name, g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), NULL); content_mime = g_content_type_get_mime_type (content_type); /* In theory we should look at all the mime types gdk-pixbuf supports * and go from there, but we know what file types we've added. */ if (g_content_type_is_a (content_mime, "image/png") || g_content_type_is_a (content_mime, "image/gif") || g_content_type_is_a (content_mime, "image/jpeg")) { widget = gtk_image_new_from_resource (resource_name); } else if (g_content_type_is_a (content_mime, "text/plain") || g_content_type_is_a (content_mime, "application/x-ext-ui") || g_content_type_is_a (content_mime, "text/css")) { GtkTextBuffer *buffer; GtkWidget *textview; widget = create_text (&textview, FALSE); buffer = gtk_text_buffer_new (NULL); gtk_text_buffer_set_text (buffer, g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes)); gtk_text_view_set_buffer (GTK_TEXT_VIEW (textview), buffer); } else { g_warning ("Don't know how to display resource '%s' of type '%s'\n", resource_name, content_mime); widget = NULL; } gtk_widget_show_all (widget); label = gtk_label_new (resources[i]); gtk_widget_show (label); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), widget, label); gtk_container_child_set (GTK_CONTAINER (notebook), GTK_WIDGET (widget), "tab-expand", TRUE, NULL); g_free (content_mime); g_free (content_type); g_free (resource_name); g_bytes_unref (bytes); } g_strfreev (resources); g_free (resource_dir); }
IXMLDOMNode *create_node( xmlNodePtr node ) { IUnknown *pUnk; IXMLDOMNode *ret; HRESULT hr; if ( !node ) return NULL; TRACE("type %d\n", node->type); switch(node->type) { case XML_ELEMENT_NODE: pUnk = create_element( node ); break; case XML_ATTRIBUTE_NODE: pUnk = create_attribute( node ); break; case XML_TEXT_NODE: pUnk = create_text( node ); break; case XML_CDATA_SECTION_NODE: pUnk = create_cdata( node ); break; case XML_ENTITY_REF_NODE: pUnk = create_doc_entity_ref( node ); break; case XML_PI_NODE: pUnk = create_pi( node ); break; case XML_COMMENT_NODE: pUnk = create_comment( node ); break; case XML_DOCUMENT_NODE: pUnk = create_domdoc( node ); break; case XML_DOCUMENT_FRAG_NODE: pUnk = create_doc_fragment( node ); break; case XML_DTD_NODE: pUnk = create_doc_type( node ); break; default: { unknode *new_node; FIXME("only creating basic node for type %d\n", node->type); new_node = heap_alloc(sizeof(unknode)); if(!new_node) return NULL; new_node->IXMLDOMNode_iface.lpVtbl = &unknode_vtbl; new_node->ref = 1; init_xmlnode(&new_node->node, node, &new_node->IXMLDOMNode_iface, NULL); pUnk = (IUnknown*)&new_node->IXMLDOMNode_iface; } } hr = IUnknown_QueryInterface(pUnk, &IID_IXMLDOMNode, (LPVOID*)&ret); IUnknown_Release(pUnk); if(FAILED(hr)) return NULL; return ret; }
int main (int argc, char **argv) { GtkWidget *window; GtkWidget *notebook; GtkWidget *hbox; GtkWidget *tree; GtkTextTag *tag; /* Most code in gtk-demo is intended to be exemplary, but not * these few lines, which are just a hack so gtk-demo will work * in the GTK tree without installing it. */ if (g_file_test ("../../gdk-pixbuf/libpixbufloader-pnm.la", G_FILE_TEST_EXISTS)) { g_setenv ("GDK_PIXBUF_MODULE_FILE", "../../gdk-pixbuf/gdk-pixbuf.loaders", TRUE); g_setenv ("GTK_IM_MODULE_FILE", "../../modules/input/gtk.immodules", TRUE); } /* -- End of hack -- */ gtk_init (&argc, &argv); setup_default_icon (); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "GTK+ Code Demos"); g_signal_connect_after (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); hbox = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (window), hbox); tree = create_tree (); gtk_box_pack_start (GTK_BOX (hbox), tree, FALSE, FALSE, 0); notebook = gtk_notebook_new (); gtk_box_pack_start (GTK_BOX (hbox), notebook, TRUE, TRUE, 0); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), create_text (&info_buffer, FALSE), gtk_label_new_with_mnemonic ("_Info")); tag = gtk_text_buffer_create_tag (info_buffer, "title", "font", "Sans 18", NULL); g_object_unref (info_buffer); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), create_text (&source_buffer, TRUE), gtk_label_new_with_mnemonic ("_Source")); tag = gtk_text_buffer_create_tag (source_buffer, "comment", "foreground", "DodgerBlue", NULL); tag = gtk_text_buffer_create_tag (source_buffer, "type", "foreground", "ForestGreen", NULL); tag = gtk_text_buffer_create_tag (source_buffer, "string", "foreground", "RosyBrown", "weight", PANGO_WEIGHT_BOLD, NULL); tag = gtk_text_buffer_create_tag (source_buffer, "control", "foreground", "purple", NULL); tag = gtk_text_buffer_create_tag (source_buffer, "preprocessor", "style", PANGO_STYLE_OBLIQUE, "foreground", "burlywood4", NULL); tag = gtk_text_buffer_create_tag (source_buffer, "function", "weight", PANGO_WEIGHT_BOLD, "foreground", "DarkGoldenrod4", NULL); g_object_unref (source_buffer); gtk_window_set_default_size (GTK_WINDOW (window), 600, 400); gtk_widget_show_all (window); load_file (testgtk_demos[0].filename); gtk_main (); return 0; }
static void add_data_tab (const gchar *demoname) { gchar *resource_dir, *resource_name; gchar **resources; GtkWidget *widget, *label; guint i; resource_dir = g_strconcat ("/", demoname, NULL); resources = g_resources_enumerate_children (resource_dir, 0, NULL); if (resources == NULL) { g_free (resource_dir); return; } for (i = 0; resources[i]; i++) { resource_name = g_strconcat (resource_dir, "/", resources[i], NULL); widget = gtk_image_new_from_resource (resource_name); if (gtk_image_get_pixbuf (GTK_IMAGE (widget)) == NULL && gtk_image_get_animation (GTK_IMAGE (widget)) == NULL) { GBytes *bytes; /* So we've used the best API available to figure out it's * not an image. Let's try something else then. */ g_object_ref_sink (widget); g_object_unref (widget); bytes = g_resources_lookup_data (resource_name, 0, NULL); g_assert (bytes); if (g_utf8_validate (g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), NULL)) { /* Looks like it parses as text. Dump it into a textview then! */ GtkTextBuffer *buffer; GtkWidget *textview; widget = create_text (&textview, FALSE); buffer = gtk_text_buffer_new (NULL); gtk_text_buffer_set_text (buffer, g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes)); gtk_text_view_set_buffer (GTK_TEXT_VIEW (textview), buffer); } else { g_warning ("Don't know how to display resource '%s'\n", resource_name); widget = NULL; } g_bytes_unref (bytes); } gtk_widget_show_all (widget); label = gtk_label_new (resources[i]); gtk_widget_show (label); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), widget, label); gtk_container_child_set (GTK_CONTAINER (notebook), GTK_WIDGET (widget), "tab-expand", TRUE, NULL); g_free (resource_name); } g_strfreev (resources); g_free (resource_dir); }
int main(void) { touchPosition touch; videoSetModeSub(MODE_0_2D | DISPLAY_BG0_ACTIVE); //sub bg 0 will be used to print text vramSetBankC(VRAM_C_SUB_BG); SUB_BG0_CR = BG_MAP_BASE(31); BG_PALETTE_SUB[255] = RGB15(31,31,31); //by default font will be rendered with color 255 //consoleInit() is a lot more fluxible but this gets you up and running quick consoleInitDefault((u16*)SCREEN_BASE_BLOCK_SUB(31), (u16*)CHAR_BASE_BLOCK_SUB(0), 16); ///////////// powerON(POWER_ALL); // set mode 0, enable BG0 and set it to 3D videoSetMode(MODE_0_3D); vramSetBankA(VRAM_A_TEXTURE); // irqs are nice irqInit(); irqEnable(IRQ_VBLANK); // initialize gl glInit(); // setup the rear plane glClearColor(2, 4, 3, 16); glClearDepth(GL_MAX_DEPTH); // this should work the same as the normal gl call glViewPort(0,0, 255,191); glPolyFmt(POLY_ALPHA(31) | POLY_CULL_NONE); glMatrixMode(GL_PROJECTION); glLoadIdentity(); //~ glOrtho(0, 1, 192.0/256.0, 0, -10, 10); glOrthof32(0, 1<<12, (192<<12)/256, 0, -10<<12, 10<<12); REG_POWERCNT^= POWER_SWAP_LCDS; ///////////// flux_init(); create_frame_groups(); create_button_groups(); create_titleframe(); dmaCopy(fluxcolors, syscol_table, sizeof(fluxcolors)); dword rc1= create_rect(NOPARENT, 20,20, 128,96, 0x808080); dword rc= create_rect(NOPARENT, 10,10, 128,96, 0x404040|TRANSL_3); dword frm= clone_frame("titleframe", rc); clone_frame("titleframe", rc1); //~ clone_group("button", rc, 10,30, 30,14, ALIGN_LEFT|ALIGN_TOP); create_rect(rc, 10,10, 10,10, 0xFFFFFF|TRANSL_1); create_rect(rc, 20,10, 10,10, 0xFFFFFF|TRANSL_2); create_rect(rc, 30,10, 10,10, 0xFFFFFF|TRANSL_3); create_rect(rc, 10,15, 30,10, 0xFFFFFF|TRANSL_1); create_text(rc, 10,30, 40,40, "Text! Space!\nNewline!", 0xFFFFFF, FONT_DEFAULT); bool redraw_all= true; bool touch_wasdown= false; int lasttouch_x, lasttouch_y; while(1) { scanKeys(); u32 keysheld= keysHeld(); u32 keysdown= keysDown(); touch= touchReadXY(); if(keysdown&KEY_A) { redraw_all^= 1; iprintf("redraw each frame: %s\n", redraw_all? "on": "off"); } if(keysdown&KEY_B) { do_texalpha^= 1; iprintf("texture alpha: %s\n", do_texalpha? "on": "off"); } if(touch.x || touch.y) { flux_mouse_event(touch.px, touch.py, 1); lasttouch_x= touch.px, lasttouch_y= touch.py; touch_wasdown= true; } else { if(touch_wasdown) flux_mouse_event(lasttouch_x, lasttouch_y, 0); touch_wasdown= false; } flux_tick(); if(redraw_all) { redraw_rect(&viewport); update_rect(&viewport); } swiWaitForVBlank(); } return 0; }
static NATIVECALL(text_new){ Link link = create_text(Arg); View v = This->value.vptr; im_append(v->items, link); return link; }