2 PrtView plugin for GtkRadiant
3 Copyright (C) 2001 Geoffrey Dewan, Loki software and qeradiant.com
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // ConfigDialog.cpp : implementation file
29 //static char THIS_FILE[] = __FILE__;
32 /////////////////////////////////////////////////////////////////////////////
33 // CConfigDialog dialog
37 static void dialog_button_callback (GtkWidget *widget, gpointer data)
42 parent = gtk_widget_get_toplevel (widget);
43 loop = (int*)g_object_get_data (G_OBJECT (parent), "loop");
44 ret = (int*)g_object_get_data (G_OBJECT (parent), "ret");
50 static gint dialog_delete_callback (GtkWidget *widget, GdkEvent* event, gpointer data)
54 gtk_widget_hide (widget);
55 loop = (int*)g_object_get_data (G_OBJECT (widget), "loop");
61 // =============================================================================
62 // Color selection dialog
64 static int DoColor (COLORREF *c)
68 int loop = 1, ret = IDCANCEL;
70 clr[0] = ((double)GetRValue (*c)) / 255.0;
71 clr[1] = ((double)GetGValue (*c)) / 255.0;
72 clr[2] = ((double)GetBValue (*c)) / 255.0;
74 dlg = gtk_color_selection_dialog_new ("Choose Color");
75 gtk_color_selection_set_color (GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dlg)->colorsel), clr);
76 gtk_signal_connect (GTK_OBJECT (dlg), "delete_event",
77 GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
78 gtk_signal_connect (GTK_OBJECT (dlg), "destroy",
79 GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
80 gtk_signal_connect (GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (dlg)->ok_button), "clicked",
81 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
82 gtk_signal_connect (GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (dlg)->cancel_button), "clicked",
83 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
84 g_object_set_data (G_OBJECT (dlg), "loop", &loop);
85 g_object_set_data (G_OBJECT (dlg), "ret", &ret);
91 gtk_main_iteration ();
93 gtk_color_selection_get_color (GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dlg)->colorsel), clr);
95 gtk_grab_remove (dlg);
96 gtk_widget_destroy (dlg);
100 *c = RGB (clr[0]*255, clr[1]*255, clr[2]*255);
106 static void Set2DText (GtkWidget* label)
110 sprintf(s, "Line Width = %6.3f", portals.width_2d * 0.5f);
112 gtk_label_set_text (GTK_LABEL (label), s);
115 static void Set3DText (GtkWidget* label)
119 sprintf(s, "Line Width = %6.3f", portals.width_3d * 0.5f);
121 gtk_label_set_text (GTK_LABEL (label), s);
124 static void Set3DTransText (GtkWidget* label)
128 sprintf(s, "Polygon transparency = %d%%", (int)portals.trans_3d);
130 gtk_label_set_text (GTK_LABEL (label), s);
133 static void SetClipText (GtkWidget* label)
137 sprintf(s, "Cubic clip range = %d", (int)portals.clip_range * 64);
139 gtk_label_set_text (GTK_LABEL (label), s);
142 static void OnScroll2d (GtkAdjustment *adj, gpointer data)
144 portals.width_2d = adj->value;
145 Set2DText (GTK_WIDGET (data));
147 if(interfaces_started)
148 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
151 static void OnScroll3d (GtkAdjustment *adj, gpointer data)
153 portals.width_3d = adj->value;
154 Set3DText (GTK_WIDGET (data));
156 if(interfaces_started)
157 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
160 static void OnScrollTrans (GtkAdjustment *adj, gpointer data)
162 portals.trans_3d = adj->value;
163 Set3DTransText (GTK_WIDGET (data));
165 if(interfaces_started)
166 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
169 static void OnScrollClip (GtkAdjustment *adj, gpointer data)
171 portals.clip_range = adj->value;
172 SetClipText (GTK_WIDGET (data));
174 if(interfaces_started)
175 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
178 static void OnAntiAlias2d (GtkWidget *widget, gpointer data)
180 portals.aa_2d = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? true : false;
182 if(interfaces_started)
183 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
186 static void OnConfig2d (GtkWidget *widget, gpointer data)
188 portals.show_2d = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? true : false;
190 if(interfaces_started)
191 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
194 static void OnColor2d (GtkWidget *widget, gpointer data)
196 if (DoColor (&portals.color_2d) == IDOK)
200 if(interfaces_started)
201 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
205 static void OnConfig3d (GtkWidget *widget, gpointer data)
207 portals.show_3d = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? true : false;
209 if(interfaces_started)
210 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
214 static void OnAntiAlias3d (GtkWidget *widget, gpointer data)
216 portals.aa_3d = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? true : false;
218 if(interfaces_started)
219 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
222 static void OnColor3d (GtkWidget *widget, gpointer data)
224 if (DoColor (&portals.color_3d) == IDOK)
228 if(interfaces_started)
229 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
233 static void OnColorFog (GtkWidget *widget, gpointer data)
235 if (DoColor (&portals.color_fog) == IDOK)
239 if(interfaces_started)
240 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
244 static void OnFog (GtkWidget *widget, gpointer data)
246 portals.fog = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? true : false;
248 if(interfaces_started)
249 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
252 static void OnSelchangeZbuffer (GtkWidget *widget, gpointer data)
254 portals.zbuffer = GPOINTER_TO_INT (data);
256 if(interfaces_started)
257 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
260 static void OnPoly (GtkWidget *widget, gpointer data)
262 portals.polygons = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
264 if(interfaces_started)
265 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
268 static void OnLines (GtkWidget *widget, gpointer data)
270 portals.lines = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
272 if(interfaces_started)
273 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
276 static void OnClip (GtkWidget *widget, gpointer data)
278 portals.clip = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? true : false;
280 if(interfaces_started)
281 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
284 void DoConfigDialog ()
286 GtkWidget *dlg, *hbox, *vbox, *vbox2, *button, *table, *frame;
287 GtkWidget *lw3slider, *lw3label, *lw2slider, *lw2label, *zlist, *menu, *item;
288 GtkWidget *aa2check, *aa3check, *depthcheck, *linescheck, *polyscheck;
289 GtkWidget *transslider, *translabel, *clipslider, *cliplabel;
290 GtkWidget *show2check, *show3check, *portalcheck;
291 int loop = 1, ret = IDCANCEL;
294 dlg = gtk_window_new (GTK_WINDOW_TOPLEVEL);
295 gtk_window_set_title (GTK_WINDOW (dlg), "Portal Viewer Configuration");
296 gtk_signal_connect (GTK_OBJECT (dlg), "delete_event",
297 GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
298 gtk_signal_connect (GTK_OBJECT (dlg), "destroy",
299 GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
300 g_object_set_data (G_OBJECT (dlg), "loop", &loop);
301 g_object_set_data (G_OBJECT (dlg), "ret", &ret);
303 vbox = gtk_vbox_new (FALSE, 5);
304 gtk_widget_show (vbox);
305 gtk_container_add (GTK_CONTAINER (dlg), vbox);
306 gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
308 frame = gtk_frame_new ("3D View");
309 gtk_widget_show (frame);
310 gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
312 vbox2 = gtk_vbox_new (FALSE, 5);
313 gtk_widget_show (vbox2);
314 gtk_container_add (GTK_CONTAINER (frame), vbox2);
315 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 5);
317 hbox = gtk_hbox_new (FALSE, 5);
318 gtk_widget_show (hbox);
319 gtk_box_pack_start (GTK_BOX (vbox2), hbox, TRUE, TRUE, 0);
321 adj = gtk_adjustment_new (portals.width_3d, 2, 40, 1, 1, 1);
322 lw3slider = gtk_hscale_new (GTK_ADJUSTMENT (adj));
323 gtk_widget_show (lw3slider);
324 gtk_box_pack_start (GTK_BOX (hbox), lw3slider, TRUE, TRUE, 0);
325 gtk_scale_set_draw_value (GTK_SCALE (lw3slider), FALSE);
327 lw3label = gtk_label_new ("");
328 gtk_widget_show (lw3label);
329 gtk_box_pack_start (GTK_BOX (hbox), lw3label, FALSE, TRUE, 0);
330 gtk_signal_connect (adj, "value_changed", GTK_SIGNAL_FUNC (OnScroll3d), lw3label);
332 table = gtk_table_new (2, 4, FALSE);
333 gtk_widget_show (table);
334 gtk_box_pack_start (GTK_BOX (vbox2), table, TRUE, TRUE, 0);
335 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
336 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
338 button = gtk_button_new_with_label ("Color");
339 gtk_widget_show (button);
340 gtk_table_attach (GTK_TABLE (table), button, 0, 1, 0, 1,
341 (GtkAttachOptions) (GTK_FILL),
342 (GtkAttachOptions) (0), 0, 0);
343 gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (OnColor3d), NULL);
345 button = gtk_button_new_with_label ("Depth Color");
346 gtk_widget_show (button);
347 gtk_table_attach (GTK_TABLE (table), button, 0, 1, 1, 2,
348 (GtkAttachOptions) (GTK_FILL),
349 (GtkAttachOptions) (0), 0, 0);
350 gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (OnColorFog), NULL);
352 aa3check = gtk_check_button_new_with_label ("Anti-Alias (May not work on some video cards)");
353 gtk_widget_show (aa3check);
354 gtk_table_attach (GTK_TABLE (table), aa3check, 1, 4, 0, 1,
355 (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
356 (GtkAttachOptions) (0), 0, 0);
357 gtk_signal_connect (GTK_OBJECT (aa3check), "toggled", GTK_SIGNAL_FUNC (OnAntiAlias3d), NULL);
359 depthcheck = gtk_check_button_new_with_label ("Depth Cue");
360 gtk_widget_show (depthcheck);
361 gtk_table_attach (GTK_TABLE (table), depthcheck, 1, 2, 1, 2,
362 (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
363 (GtkAttachOptions) (0), 0, 0);
364 gtk_signal_connect (GTK_OBJECT (depthcheck), "toggled", GTK_SIGNAL_FUNC (OnFog), NULL);
366 linescheck = gtk_check_button_new_with_label ("Lines");
367 gtk_widget_show (linescheck);
368 gtk_table_attach (GTK_TABLE (table), linescheck, 2, 3, 1, 2,
369 (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
370 (GtkAttachOptions) (0), 0, 0);
371 gtk_signal_connect (GTK_OBJECT (linescheck), "toggled", GTK_SIGNAL_FUNC (OnLines), NULL);
373 polyscheck = gtk_check_button_new_with_label ("Polygons");
374 gtk_widget_show (polyscheck);
375 gtk_table_attach (GTK_TABLE (table), polyscheck, 3, 4, 1, 2,
376 (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
377 (GtkAttachOptions) (0), 0, 0);
378 gtk_signal_connect (GTK_OBJECT (polyscheck), "toggled", GTK_SIGNAL_FUNC (OnPoly), NULL);
380 zlist = gtk_option_menu_new ();
381 gtk_widget_show (zlist);
382 gtk_box_pack_start (GTK_BOX (vbox2), zlist, TRUE, FALSE, 0);
384 menu = gtk_menu_new ();
385 gtk_widget_show (menu);
386 gtk_option_menu_set_menu (GTK_OPTION_MENU (zlist), menu);
388 item = gtk_menu_item_new_with_label ("Z-Buffer Test and Write (recommended for solid or no polygons)");
389 gtk_widget_show (item);
390 gtk_signal_connect (GTK_OBJECT (item), "activate",
391 GTK_SIGNAL_FUNC (OnSelchangeZbuffer), GINT_TO_POINTER (0));
392 gtk_menu_append (GTK_MENU (menu), item);
394 item = gtk_menu_item_new_with_label ("Z-Buffer Test Only (recommended for transparent polygons)");
395 gtk_widget_show (item);
396 gtk_signal_connect (GTK_OBJECT (item), "activate",
397 GTK_SIGNAL_FUNC (OnSelchangeZbuffer), GINT_TO_POINTER (1));
398 gtk_menu_append (GTK_MENU (menu), item);
400 item = gtk_menu_item_new_with_label ("Z-Buffer Off");
401 gtk_widget_show (item);
402 gtk_signal_connect (GTK_OBJECT (item), "activate",
403 GTK_SIGNAL_FUNC (OnSelchangeZbuffer), GINT_TO_POINTER (2));
404 gtk_menu_append (GTK_MENU (menu), item);
406 table = gtk_table_new (2, 2, FALSE);
407 gtk_widget_show (table);
408 gtk_box_pack_start (GTK_BOX (vbox2), table, TRUE, TRUE, 0);
409 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
410 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
412 adj = gtk_adjustment_new (portals.trans_3d, 0, 100, 1, 1, 1);
413 transslider = gtk_hscale_new (GTK_ADJUSTMENT (adj));
414 gtk_widget_show (transslider);
415 gtk_table_attach (GTK_TABLE (table), transslider, 0, 1, 0, 1,
416 (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
417 (GtkAttachOptions) (0), 0, 0);
418 gtk_scale_set_draw_value (GTK_SCALE (transslider), FALSE);
420 translabel = gtk_label_new ("");
421 gtk_widget_show (translabel);
422 gtk_table_attach (GTK_TABLE (table), translabel, 1, 2, 0, 1,
423 (GtkAttachOptions) (GTK_FILL),
424 (GtkAttachOptions) (0), 0, 0);
425 gtk_misc_set_alignment (GTK_MISC (translabel), 0.0, 0.0);
426 gtk_signal_connect (adj, "value_changed", GTK_SIGNAL_FUNC (OnScrollTrans), translabel);
428 adj = gtk_adjustment_new (portals.clip_range, 1, 128, 1, 1, 1);
429 clipslider = gtk_hscale_new (GTK_ADJUSTMENT (adj));
430 gtk_widget_show (clipslider);
431 gtk_table_attach (GTK_TABLE (table), clipslider, 0, 1, 1, 2,
432 (GtkAttachOptions) (GTK_EXPAND|GTK_FILL),
433 (GtkAttachOptions) (0), 0, 0);
434 gtk_scale_set_draw_value (GTK_SCALE (clipslider), FALSE);
436 cliplabel = gtk_label_new ("");
437 gtk_widget_show (cliplabel);
438 gtk_table_attach (GTK_TABLE (table), cliplabel, 1, 2, 1, 2,
439 (GtkAttachOptions) (GTK_FILL),
440 (GtkAttachOptions) (0), 0, 0);
441 gtk_misc_set_alignment (GTK_MISC (cliplabel), 0.0, 0.0);
442 gtk_signal_connect (adj, "value_changed", GTK_SIGNAL_FUNC (OnScrollClip), cliplabel);
444 hbox = gtk_hbox_new (TRUE, 5);
445 gtk_widget_show (hbox);
446 gtk_box_pack_start (GTK_BOX (vbox2), hbox, TRUE, FALSE, 0);
448 show3check = gtk_check_button_new_with_label ("Show");
449 gtk_widget_show (show3check);
450 gtk_box_pack_start (GTK_BOX (hbox), show3check, TRUE, TRUE, 0);
451 gtk_signal_connect (GTK_OBJECT (show3check), "toggled", GTK_SIGNAL_FUNC (OnConfig3d), NULL);
453 portalcheck = gtk_check_button_new_with_label ("Portal cubic clipper");
454 gtk_widget_show (portalcheck);
455 gtk_box_pack_start (GTK_BOX (hbox), portalcheck, TRUE, TRUE, 0);
456 gtk_signal_connect (GTK_OBJECT (portalcheck), "toggled", GTK_SIGNAL_FUNC (OnClip), NULL);
458 frame = gtk_frame_new ("2D View");
459 gtk_widget_show (frame);
460 gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
462 vbox2 = gtk_vbox_new (FALSE, 5);
463 gtk_widget_show (vbox2);
464 gtk_container_add (GTK_CONTAINER (frame), vbox2);
465 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 5);
467 hbox = gtk_hbox_new (FALSE, 5);
468 gtk_widget_show (hbox);
469 gtk_box_pack_start (GTK_BOX (vbox2), hbox, TRUE, FALSE, 0);
471 adj = gtk_adjustment_new (portals.width_2d, 2, 40, 1, 1, 1);
472 lw2slider = gtk_hscale_new (GTK_ADJUSTMENT (adj));
473 gtk_widget_show (lw2slider);
474 gtk_box_pack_start (GTK_BOX (hbox), lw2slider, TRUE, TRUE, 0);
475 gtk_scale_set_draw_value (GTK_SCALE (lw2slider), FALSE);
477 lw2label = gtk_label_new ("");
478 gtk_widget_show (lw2label);
479 gtk_box_pack_start (GTK_BOX (hbox), lw2label, FALSE, TRUE, 0);
480 gtk_signal_connect (adj, "value_changed", GTK_SIGNAL_FUNC (OnScroll2d), lw2label);
482 hbox = gtk_hbox_new (FALSE, 5);
483 gtk_widget_show (hbox);
484 gtk_box_pack_start (GTK_BOX (vbox2), hbox, TRUE, FALSE, 0);
486 button = gtk_button_new_with_label ("Color");
487 gtk_widget_show (button);
488 gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
489 gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (OnColor2d), NULL);
490 gtk_widget_set_usize (button, 60, -2);
492 aa2check = gtk_check_button_new_with_label ("Anti-Alias (May not work on some video cards)");
493 gtk_widget_show (aa2check);
494 gtk_box_pack_start (GTK_BOX (hbox), aa2check, TRUE, TRUE, 0);
495 gtk_signal_connect (GTK_OBJECT (aa2check), "toggled", GTK_SIGNAL_FUNC (OnAntiAlias2d), NULL);
497 hbox = gtk_hbox_new (FALSE, 5);
498 gtk_widget_show (hbox);
499 gtk_box_pack_start (GTK_BOX (vbox2), hbox, TRUE, FALSE, 0);
501 show2check = gtk_check_button_new_with_label ("Show");
502 gtk_widget_show (show2check);
503 gtk_box_pack_start (GTK_BOX (hbox), show2check, FALSE, FALSE, 0);
504 gtk_signal_connect (GTK_OBJECT (show2check), "toggled", GTK_SIGNAL_FUNC (OnConfig2d), NULL);
506 hbox = gtk_hbox_new (FALSE, 5);
507 gtk_widget_show (hbox);
508 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
510 button = gtk_button_new_with_label ("OK");
511 gtk_widget_show (button);
512 gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0);
513 gtk_signal_connect (GTK_OBJECT (button), "clicked",
514 GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (IDOK));
515 gtk_widget_set_usize (button, 60, -2);
518 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (show2check), portals.show_2d);
519 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (aa2check), portals.aa_2d);
520 Set2DText (lw2label);
522 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (show3check), portals.show_3d);
523 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (depthcheck), portals.fog);
524 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (polyscheck), portals.polygons);
525 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (linescheck), portals.lines);
526 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (aa3check), portals.aa_3d);
527 gtk_option_menu_set_history (GTK_OPTION_MENU (zlist), portals.zbuffer);
528 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (portalcheck), portals.clip);
530 Set3DText (lw3label);
531 Set3DTransText (translabel);
532 SetClipText (cliplabel);
535 gtk_widget_show (dlg);
538 gtk_main_iteration ();
540 gtk_grab_remove (dlg);
541 gtk_widget_destroy (dlg);
546 CConfigDialog::CConfigDialog(CWnd* pParent /*=NULL*/)
547 : CDialog(CConfigDialog::IDD, pParent)
549 //{{AFX_DATA_INIT(CConfigDialog)
554 void CConfigDialog::DoDataExchange(CDataExchange* pDX)
556 CDialog::DoDataExchange(pDX);
557 //{{AFX_DATA_MAP(CConfigDialog)
558 DDX_Control(pDX, IDC_CLIP, m_clip_ctrl);
559 DDX_Control(pDX, IDC_CUBIC, m_cubic_ctrl);
560 DDX_Control(pDX, IDC_SCROLL_CUBIC, m_scroll_cubic_ctrl);
561 DDX_Control(pDX, IDC_LINES, m_line_ctrl);
562 DDX_Control(pDX, IDC_SCROLL_3D_TRANS, m_scroll_3d_trans_ctrl);
563 DDX_Control(pDX, IDC_3D_TRANS, m_3d_trans_ctrl);
564 DDX_Control(pDX, IDC_POLY, m_poly_ctrl);
565 DDX_Control(pDX, IDC_FOG, m_fog_ctrl);
566 DDX_Control(pDX, IDC_ZBUFFER, m_z_ctrl);
567 DDX_Control(pDX, IDC_SCROLL_3D_WIDTH, m_scroll_3d_width_ctrl);
568 DDX_Control(pDX, IDC_ANTI_ALIAS_3D, m_aa_3d_ctrl);
569 DDX_Control(pDX, IDC_3D_WIDTH, m_3d_width_ctrl);
570 DDX_Control(pDX, IDC_ANTI_ALIAS_2D, m_aa_2d_ctrl);
571 DDX_Control(pDX, IDC_SCROLL_2D_WIDTH, m_scroll_2d_width_ctrl);
572 DDX_Control(pDX, IDC_2D_WIDTH, m_2d_width_ctrl);
573 DDX_Control(pDX, IDC_CONFIG_3D, m_3d_ctrl);
574 DDX_Control(pDX, IDC_CONFIG_2D, m_2d_ctrl);
579 BEGIN_MESSAGE_MAP(CConfigDialog, CDialog)
580 //{{AFX_MSG_MAP(CConfigDialog)
582 ON_BN_CLICKED(IDC_ANTI_ALIAS_2D, OnAntiAlias2d)
583 ON_BN_CLICKED(IDC_CONFIG_2D, OnConfig2d)
584 ON_BN_CLICKED(IDC_CONFIG_3D, OnConfig3d)
585 ON_BN_CLICKED(IDC_COLOR_2D, OnColor2d)
586 ON_BN_CLICKED(IDC_ANTI_ALIAS_3D, OnAntiAlias3d)
587 ON_BN_CLICKED(IDC_COLOR_3D, OnColor3d)
588 ON_BN_CLICKED(IDC_COLOR_FOG, OnColorFog)
589 ON_BN_CLICKED(IDC_FOG, OnFog)
590 ON_CBN_SELCHANGE(IDC_ZBUFFER, OnSelchangeZbuffer)
591 ON_BN_CLICKED(IDC_POLY, OnPoly)
592 ON_BN_CLICKED(IDC_LINES, OnLines)
593 ON_BN_CLICKED(IDC_CLIP, OnClip)
597 /////////////////////////////////////////////////////////////////////////////
598 // CConfigDialog message handlers
600 void CConfigDialog::Set2DText()
604 sprintf(s, "Line Width = %6.3f", portals.width_2d * 0.5f);
606 m_2d_width_ctrl.SetWindowText(s);
609 void CConfigDialog::Set3DText()
613 sprintf(s, "Line Width = %6.3f", portals.width_3d * 0.5f);
615 m_3d_width_ctrl.SetWindowText(s);
618 void CConfigDialog::Set3DTransText()
622 sprintf(s, "Polygon transparency = %d%%", (int)portals.trans_3d);
624 m_3d_trans_ctrl.SetWindowText(s);
627 void CConfigDialog::SetClipText()
631 sprintf(s, "Cubic clip range = %d", (int)portals.clip_range * 64);
633 m_cubic_ctrl.SetWindowText(s);
636 qboolean CConfigDialog::OnInitDialog()
638 CDialog::OnInitDialog();
640 m_2d_ctrl.SetCheck(portals.show_2d);
641 m_aa_2d_ctrl.SetCheck(portals.aa_2d);
644 m_scroll_2d_width_ctrl.SetScrollRange(2, 40, FALSE);
645 m_scroll_2d_width_ctrl.SetScrollPos((int)portals.width_2d, TRUE);
647 m_3d_ctrl.SetCheck(portals.show_3d);
648 m_fog_ctrl.SetCheck(portals.fog);
649 m_poly_ctrl.SetCheck(portals.polygons);
650 m_line_ctrl.SetCheck(portals.lines);
651 m_aa_3d_ctrl.SetCheck(portals.aa_3d);
652 m_z_ctrl.SetCurSel(portals.zbuffer);
653 m_clip_ctrl.SetCheck(portals.clip);
659 m_scroll_3d_width_ctrl.SetScrollRange(2, 40, FALSE);
660 m_scroll_3d_width_ctrl.SetScrollPos((int)portals.width_3d, TRUE);
661 m_scroll_3d_trans_ctrl.SetScrollRange(0, 100, FALSE);
662 m_scroll_3d_trans_ctrl.SetScrollPos((int)portals.trans_3d, TRUE);
663 m_scroll_cubic_ctrl.SetScrollRange(1, 128, FALSE);
664 m_scroll_cubic_ctrl.SetScrollPos((int)portals.clip_range, TRUE);
666 return TRUE; // return TRUE unless you set the focus to a control
667 // EXCEPTION: OCX Property Pages should return FALSE
670 void CConfigDialog::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
673 float scr_min, scr_max, scr_big;
675 if(nSBCode == SB_THUMBPOSITION)
677 CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
681 if(pScrollBar == &m_scroll_2d_width_ctrl)
687 adj = &portals.width_2d;
689 else if(pScrollBar == &m_scroll_3d_width_ctrl)
695 adj = &portals.width_3d;
697 else if(pScrollBar == &m_scroll_3d_trans_ctrl)
703 adj = &portals.trans_3d;
705 else if(pScrollBar == &m_scroll_cubic_ctrl)
711 adj = &portals.clip_range;
715 CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
723 pScrollBar->SetScrollPos((int)scr_min, TRUE);
727 pScrollBar->SetScrollPos((int)scr_max, TRUE);
735 pScrollBar->SetScrollPos((int)(*adj), TRUE);
744 pScrollBar->SetScrollPos((int)(*adj), TRUE);
753 pScrollBar->SetScrollPos((int)(*adj), TRUE);
762 pScrollBar->SetScrollPos((int)(*adj), TRUE);
770 pScrollBar->SetScrollPos((int)(*adj), TRUE);
774 CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
777 if(pScrollBar == &m_scroll_2d_width_ctrl)
781 if(interfaces_started)
782 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
784 else if(pScrollBar == &m_scroll_3d_width_ctrl)
788 if(interfaces_started)
789 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
791 else if(pScrollBar == &m_scroll_3d_trans_ctrl)
795 if(interfaces_started)
796 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
798 else if(pScrollBar == &m_scroll_cubic_ctrl)
802 if(interfaces_started)
803 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
807 void CConfigDialog::OnAntiAlias2d()
809 portals.aa_2d = m_aa_2d_ctrl.GetCheck();
811 if(interfaces_started)
812 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
815 void CConfigDialog::OnConfig2d()
817 portals.show_2d = m_2d_ctrl.GetCheck();
819 if(interfaces_started)
820 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
823 void CConfigDialog::OnColor2d()
825 CColorDialog dlg(portals.color_2d, CC_ANYCOLOR, this);
827 if(dlg.DoModal() == IDOK)
829 portals.color_2d = dlg.GetColor();
833 if(interfaces_started)
834 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_2D);
838 void CConfigDialog::OnConfig3d()
840 portals.show_3d = m_3d_ctrl.GetCheck();
842 if(interfaces_started)
843 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
847 void CConfigDialog::OnAntiAlias3d()
849 portals.aa_3d = m_aa_3d_ctrl.GetCheck();
851 if(interfaces_started)
852 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
855 void CConfigDialog::OnColor3d()
857 CColorDialog dlg(portals.color_3d, CC_ANYCOLOR, this);
859 if(dlg.DoModal() == IDOK)
861 portals.color_3d = dlg.GetColor();
865 if(interfaces_started)
866 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
870 void CConfigDialog::OnColorFog()
872 CColorDialog dlg(portals.color_fog, CC_ANYCOLOR, this);
874 if(dlg.DoModal() == IDOK)
876 portals.color_fog = dlg.GetColor();
880 if(interfaces_started)
881 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
885 void CConfigDialog::OnFog()
887 portals.fog = m_fog_ctrl.GetCheck();
889 if(interfaces_started)
890 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
893 void CConfigDialog::OnSelchangeZbuffer()
895 portals.zbuffer = m_z_ctrl.GetCurSel();
897 if(interfaces_started)
898 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
901 void CConfigDialog::OnPoly()
903 portals.polygons = m_poly_ctrl.GetCheck();
905 if(interfaces_started)
906 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
909 void CConfigDialog::OnLines()
911 portals.lines = m_line_ctrl.GetCheck();
913 if(interfaces_started)
914 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);
917 void CConfigDialog::OnClip()
919 portals.clip = m_clip_ctrl.GetCheck();
921 if(interfaces_started)
922 g_FuncTable.m_pfnSysUpdateWindows(UPDATE_3D);