int X0, Y0;
int X0G, Y0G;
-static RECT rcCoord; // where X= Y= is drawn
-static RECT rcGrid; // rectangle within rcLower that forms the border of the grid, plus
+static Rect rcCoord; // where X= Y= is drawn
+static Rect rcGrid; // rectangle within rcLower that forms the border of the grid, plus
// a 3 pixel slop.
-static RECT rcLower; // lower half of window, where plan view is drawn
-static RECT rcUpper; // upper half or entire window, where isometric projection is drawn
+static Rect rcLower; // lower half of window, where plan view is drawn
+static Rect rcUpper; // upper half or entire window, where isometric projection is drawn
void vertex_selected();
void texfont_init();
-void texfont_write( const char *text, float l, float t );
+void texfont_write( const char *text, int l, int t );
#define PEN_GRID { \
g_GLTable.m_pfn_qglLineWidth( 1 ); \
#define DRAW_QUAD( rc,r,g,b ) { \
g_GLTable.m_pfn_qglBegin( GL_QUADS ); \
g_GLTable.m_pfn_qglColor3f( 0,1,0 ); \
- g_GLTable.m_pfn_qglVertex2f( rc.left - 1, rc.bottom ); \
- g_GLTable.m_pfn_qglVertex2f( rc.right, rc.bottom ); \
- g_GLTable.m_pfn_qglVertex2f( rc.right, rc.top + 1 ); \
- g_GLTable.m_pfn_qglVertex2f( rc.left - 1, rc.top + 1 ); \
+ g_GLTable.m_pfn_qglVertex2i( rc.left - 1, rc.bottom ); \
+ g_GLTable.m_pfn_qglVertex2i( rc.right, rc.bottom ); \
+ g_GLTable.m_pfn_qglVertex2i( rc.right, rc.top + 1 ); \
+ g_GLTable.m_pfn_qglVertex2i( rc.left - 1, rc.top + 1 ); \
g_GLTable.m_pfn_qglColor3f( r,g,b ); \
- g_GLTable.m_pfn_qglVertex2f( rc.left, rc.bottom + 1 ); \
- g_GLTable.m_pfn_qglVertex2f( rc.right - 1, rc.bottom + 1 ); \
- g_GLTable.m_pfn_qglVertex2f( rc.right - 1, rc.top ); \
- g_GLTable.m_pfn_qglVertex2f( rc.left, rc.top ); \
+ g_GLTable.m_pfn_qglVertex2i( rc.left, rc.bottom + 1 ); \
+ g_GLTable.m_pfn_qglVertex2i( rc.right - 1, rc.bottom + 1 ); \
+ g_GLTable.m_pfn_qglVertex2i( rc.right - 1, rc.top ); \
+ g_GLTable.m_pfn_qglVertex2i( rc.left, rc.top ); \
g_GLTable.m_pfn_qglEnd(); }
rcUpper.bottom = rcUpper.top / 2;
DrawPreview( rcUpper );
g_GLTable.m_pfn_qglBegin( GL_LINES );
- g_GLTable.m_pfn_qglVertex2f( rcUpper.left, rcUpper.bottom );
- g_GLTable.m_pfn_qglVertex2f( rcUpper.right, rcUpper.bottom );
+ g_GLTable.m_pfn_qglVertex2i( rcUpper.left, rcUpper.bottom );
+ g_GLTable.m_pfn_qglVertex2i( rcUpper.right, rcUpper.bottom );
g_GLTable.m_pfn_qglEnd();
rcLower.top = rcUpper.bottom - 1;
DrawGrid( rcLower );
}
static void button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
- POINT pt = { (long)event->x, widget->allocation.height - (long)event->y };
+ Point pt = { (long)event->x, widget->allocation.height - (long)event->y };
bool Selected;
double x,y;
int i, j, k, ks;
}
static void motion( GtkWidget *widget, GdkEventMotion *event, gpointer data ){
- POINT pt = { (long)event->x, widget->allocation.height - (long)event->y };
+ Point pt = { (long)event->x, widget->allocation.height - (long)event->y };
if ( !VertexMode ) {
return;
}
void CreateViewWindow(){
- GtkWidget *dlg, *vbox, *hbox, *label, *spin, *frame;
+ GtkWidget *hbox, *label, *spin;
GtkObject *adj;
#ifndef ISOMETRIC
azimuth = PI / 6.;
#endif
- g_pWndPreview = dlg = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+ auto dlg = g_pWndPreview = ui::Window( ui::window_type::TOP );
gtk_window_set_title( GTK_WINDOW( dlg ), "GtkGenSurf Preview" );
- gtk_signal_connect( GTK_OBJECT( dlg ), "delete_event", GTK_SIGNAL_FUNC( preview_close ), NULL );
- gtk_signal_connect( GTK_OBJECT( dlg ), "destroy", GTK_SIGNAL_FUNC( gtk_widget_destroy ), NULL );
+ g_signal_connect( GTK_OBJECT( dlg ), "delete_event", G_CALLBACK( preview_close ), NULL );
+ g_signal_connect( GTK_OBJECT( dlg ), "destroy", G_CALLBACK( gtk_widget_destroy ), NULL );
gtk_window_set_transient_for( GTK_WINDOW( dlg ), GTK_WINDOW( g_pWnd ) );
gtk_window_set_default_size( GTK_WINDOW( dlg ), 300, 400 );
- vbox = gtk_vbox_new( FALSE, 5 );
- gtk_widget_show( vbox );
- gtk_container_add( GTK_CONTAINER( dlg ), vbox );
+ auto vbox = ui::VBox( FALSE, 5 );
+ vbox.show();
+ dlg.add(vbox);
#ifndef ISOMETRIC
- hbox = gtk_hbox_new( TRUE, 5 );
+ hbox = ui::HBox( TRUE, 5 );
gtk_widget_show( hbox );
gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, TRUE, 0 );
gtk_container_set_border_width( GTK_CONTAINER( hbox ), 3 );
- label = gtk_label_new( "Elevation" );
+ label = ui::Label( "Elevation" );
gtk_widget_show( label );
gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
gtk_box_pack_start( GTK_BOX( hbox ), label, FALSE, TRUE, 0 );
- adj = gtk_adjustment_new( 30, -90, 90, 1, 10, 10 );
- gtk_signal_connect( adj, "value_changed", GTK_SIGNAL_FUNC( preview_spin ), &elevation );
- spin = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 );
+ adj = ui::Adjustment( 30, -90, 90, 1, 10, 0 );
+ g_signal_connect( adj, "value_changed", G_CALLBACK( preview_spin ), &elevation );
+ spin = ui::SpinButton( adj, 1, 0 );
gtk_widget_show( spin );
gtk_box_pack_start( GTK_BOX( hbox ), spin, FALSE, TRUE, 0 );
g_signal_connect( G_OBJECT( spin ), "focus_out_event", G_CALLBACK( doublevariable_spinfocusout ), &elevation );
- adj = gtk_adjustment_new( 30, 0, 359, 1, 10, 10 );
- gtk_signal_connect( adj, "value_changed", GTK_SIGNAL_FUNC( preview_spin ), &azimuth );
- spin = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 );
+ adj = ui::Adjustment( 30, 0, 359, 1, 10, 0 );
+ g_signal_connect( adj, "value_changed", G_CALLBACK( preview_spin ), &azimuth );
+ spin = ui::SpinButton( adj, 1, 0 );
gtk_widget_show( spin );
gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( spin ), TRUE );
gtk_box_pack_end( GTK_BOX( hbox ), spin, FALSE, TRUE, 0 );
- label = gtk_label_new( "Azimuth" );
+ label = ui::Label( "Azimuth" );
gtk_widget_show( label );
gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 );
gtk_box_pack_end( GTK_BOX( hbox ), label, FALSE, TRUE, 0 );
g_signal_connect( G_OBJECT( spin ), "focus_out_event", G_CALLBACK( doublevariable_spinfocusout ), &azimuth );
#endif
- frame = gtk_frame_new( NULL );
- gtk_widget_show( frame );
+ auto frame = ui::Frame( nullptr );
+ frame.show();
gtk_frame_set_shadow_type( GTK_FRAME( frame ), GTK_SHADOW_IN );
gtk_box_pack_start( GTK_BOX( vbox ), frame, TRUE, TRUE, 0 );
g_pPreviewWidget = g_UIGtkTable.m_pfn_glwidget_new( FALSE, NULL );
gtk_widget_set_events( g_pPreviewWidget, GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK );
- gtk_signal_connect( GTK_OBJECT( g_pPreviewWidget ), "expose_event", GTK_SIGNAL_FUNC( expose ), NULL );
- gtk_signal_connect( GTK_OBJECT( g_pPreviewWidget ), "motion_notify_event", GTK_SIGNAL_FUNC( motion ), NULL );
- gtk_signal_connect( GTK_OBJECT( g_pPreviewWidget ), "button_press_event",
- GTK_SIGNAL_FUNC( button_press ), NULL );
+ g_signal_connect( GTK_OBJECT( g_pPreviewWidget ), "expose_event", G_CALLBACK( expose ), NULL );
+ g_signal_connect( GTK_OBJECT( g_pPreviewWidget ), "motion_notify_event", G_CALLBACK( motion ), NULL );
+ g_signal_connect( GTK_OBJECT( g_pPreviewWidget ), "button_press_event",
+ G_CALLBACK( button_press ), NULL );
gtk_widget_show( g_pPreviewWidget );
- gtk_container_add( GTK_CONTAINER( frame ), g_pPreviewWidget );
+ frame.add(ui::Widget(g_pPreviewWidget));
if ( Preview ) {
gtk_widget_show( g_pWndPreview );
//=============================================================
/* DrawPreview */
-void DrawPreview( RECT rc ){
+void DrawPreview( Rect rc ){
#define COSXA 0.8660254037844
#define SINXA 0.5
#define COSYA 0.8660254037844
double L;
double x,y;
int i, j;
- POINT pt[8];
+ Point pt[8];
XYZ v[8];
char axis[3][2] = {"X","Y","Z"};
Scale( rc,vv[gTri[i].v[j]],&pt[j] );
g_GLTable.m_pfn_qglBegin( GL_LINE_STRIP );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
- g_GLTable.m_pfn_qglVertex2f( pt[1].x, pt[1].y );
- g_GLTable.m_pfn_qglVertex2f( pt[2].x, pt[2].y );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[1].x, pt[1].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[2].x, pt[2].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
g_GLTable.m_pfn_qglEnd();
}
free( vv );
project( &out );
Scale( rc,out,&pt[0] );
g_GLTable.m_pfn_qglBegin( GL_LINE_STRIP );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
for ( jj = 1; jj <= SUBDIVS; jj++ )
{
v = (float)( jj ) / (float)( SUBDIVS );
}
project( &out );
Scale( rc,out,&pt[0] );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
}
g_GLTable.m_pfn_qglEnd();
}
project( &out );
Scale( rc,out,&pt[0] );
g_GLTable.m_pfn_qglBegin( GL_LINE_STRIP );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
for ( ii = 1; ii <= SUBDIVS; ii++ )
{
u = (float)( ii ) / (float)( SUBDIVS );
}
project( &out );
Scale( rc,out,&pt[0] );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
}
g_GLTable.m_pfn_qglEnd();
}
{
Scale( rc,xyz[i][0],&pt[0] );
g_GLTable.m_pfn_qglBegin( GL_LINE_STRIP );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
for ( j = 1; j <= NV; j++ )
{
Scale( rc,xyz[i][j],&pt[0] );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
}
g_GLTable.m_pfn_qglEnd();
}
{
Scale( rc,xyz[0][j],&pt[0] );
g_GLTable.m_pfn_qglBegin( GL_LINE_STRIP );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
for ( i = 1; i <= NH; i++ )
{
Scale( rc,xyz[i][j],&pt[0] );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
}
g_GLTable.m_pfn_qglEnd();
}
#endif
Scale( rc,v[0],&pt[1] );
g_GLTable.m_pfn_qglBegin( GL_LINE_STRIP );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
- g_GLTable.m_pfn_qglVertex2f( pt[1].x, pt[1].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[1].x, pt[1].y );
g_GLTable.m_pfn_qglEnd();
}
}
#endif
Scale( rc,v[3],&pt[0] );
g_GLTable.m_pfn_qglBegin( GL_LINE_STRIP );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
for ( i = 0; i < 3; i++ )
{
#ifndef ISOMETRIC
project( &v[i] );
#endif
Scale( rc,v[i],&pt[1] );
- g_GLTable.m_pfn_qglVertex2f( pt[1].x, pt[1].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[1].x, pt[1].y );
}
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
g_GLTable.m_pfn_qglEnd();
}
for ( i = 1; i <= 3; i++ )
{
g_GLTable.m_pfn_qglBegin( GL_LINES );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
- g_GLTable.m_pfn_qglVertex2f( pt[i].x, pt[i].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[i].x, pt[i].y );
g_GLTable.m_pfn_qglEnd();
texfont_write( axis[i - 1], pt[i].x - cxChar / 2,pt[i].y + cyChar / 2 );
}
Scale( rc,v[i],&pt[i] );
}
g_GLTable.m_pfn_qglBegin( GL_LINE_STRIP );
- g_GLTable.m_pfn_qglVertex2f( pt[3].x, pt[3].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[3].x, pt[3].y );
for ( i = 0; i <= 3; i++ )
- g_GLTable.m_pfn_qglVertex2f( pt[i].x, pt[i].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[i].x, pt[i].y );
g_GLTable.m_pfn_qglEnd();
g_GLTable.m_pfn_qglBegin( GL_LINE_STRIP );
- g_GLTable.m_pfn_qglVertex2f( pt[7].x, pt[7].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[7].x, pt[7].y );
for ( i = 4; i <= 7; i++ )
- g_GLTable.m_pfn_qglVertex2f( pt[i].x, pt[i].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[i].x, pt[i].y );
g_GLTable.m_pfn_qglEnd();
g_GLTable.m_pfn_qglBegin( GL_LINES );
for ( i = 0; i <= 3; i++ )
{
- g_GLTable.m_pfn_qglVertex2f( pt[i].x,pt[i].y );
- g_GLTable.m_pfn_qglVertex2f( pt[i + 4].x,pt[i + 4].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[i].x,pt[i].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[i + 4].x,pt[i + 4].y );
}
g_GLTable.m_pfn_qglEnd();
g_GLTable.m_pfn_qglDisable( GL_LINE_STIPPLE );
}
//=============================================================
-void DrawGrid( RECT rc ){
+void DrawGrid( Rect rc ){
int i, j, k;
double h,w,x,y;
- POINT pt[2];
- RECT rcBox;
+ Point pt[2];
+ Rect rcBox;
w = (double)( rc.right - rc.left + 1 ) - cxChar;
h = (double)( rc.top - rc.bottom + 1 ) - cxChar - cyChar;
{
x = Hll + i * dh;
pt[0].x = X0G + (int)( SFG * ( x - Hll ) );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[0].y );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x, pt[1].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x, pt[1].y );
}
g_GLTable.m_pfn_qglEnd();
pt[0].x = X0G;
{
y = Vll + i * dv;
pt[0].y = Y0G + (int)( SFG * ( Vur - y ) );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x,pt[0].y );
- g_GLTable.m_pfn_qglVertex2f( pt[1].x,pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x,pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[1].x,pt[0].y );
}
g_GLTable.m_pfn_qglEnd();
pt[1].x = pt[0].x + cyChar;
pt[1].y = pt[0].y;
g_GLTable.m_pfn_qglBegin( GL_LINES );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x,pt[0].y );
- g_GLTable.m_pfn_qglVertex2f( pt[1].x,pt[1].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x,pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[1].x,pt[1].y );
g_GLTable.m_pfn_qglEnd();
switch ( Plane )
{
pt[1].x = pt[0].x;
pt[1].y = pt[0].y + cyChar;
g_GLTable.m_pfn_qglBegin( GL_LINES );
- g_GLTable.m_pfn_qglVertex2f( pt[0].x,pt[0].y );
- g_GLTable.m_pfn_qglVertex2f( pt[1].x,pt[1].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[0].x,pt[0].y );
+ g_GLTable.m_pfn_qglVertex2i( pt[1].x,pt[1].y );
g_GLTable.m_pfn_qglEnd();
switch ( Plane )
{
}
//=============================================================
-void GetScaleFactor( RECT rc ){
+void GetScaleFactor( Rect rc ){
#ifdef ISOMETRIC
double h, w;
}
//=============================================================
-void Scale( RECT rc,XYZ xyz,POINT *pt ){
+void Scale( Rect rc,XYZ xyz,Point *pt ){
#ifdef ISOMETRIC