void wxDCBase::DrawSpline(int n, wxPoint points[]) { wxList list; for (int i =0; i < n; i++) { list.Append((wxObject*)&points[i]); } DrawSpline(&list); }
// TODO: this API needs fixing (wxPointList, why (!const) "wxList *"?) void wxDCBase::DrawSpline(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCoord x3, wxCoord y3) { wxList point_list; wxPoint *point1 = new wxPoint; point1->x = x1; point1->y = y1; point_list.Append((wxObject*)point1); wxPoint *point2 = new wxPoint; point2->x = x2; point2->y = y2; point_list.Append((wxObject*)point2); wxPoint *point3 = new wxPoint; point3->x = x3; point3->y = y3; point_list.Append((wxObject*)point3); DrawSpline(&point_list); for( wxList::compatibility_iterator node = point_list.GetFirst(); node; node = node->GetNext() ) { wxPoint *p = (wxPoint *)node->GetData(); delete p; } }
BOOL CEventPropertiesFireTriggerDialog::HandleMessage( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { m_hDialog = hwndDlg; bool handled = false; BOOL bret = InternalHandleMessage( &g_Params, hwndDlg, uMsg, wParam, lParam, handled ); if ( handled ) return bret; switch(uMsg) { case WM_PAINT: { PAINTSTRUCT ps; HDC hdc; hdc = BeginPaint(hwndDlg, &ps); DrawSpline( hdc, GetControl( IDC_STATIC_SPLINE ), g_Params.m_pEvent ); EndPaint(hwndDlg, &ps); return FALSE; } break; case WM_VSCROLL: { RECT rcOut; GetSplineRect( GetControl( IDC_STATIC_SPLINE ), rcOut ); InvalidateRect( hwndDlg, &rcOut, TRUE ); UpdateWindow( hwndDlg ); return FALSE; } break; case WM_INITDIALOG: { InitDialog( hwndDlg ); } return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: { HWND control = GetControl( IDC_EVENTCHOICES ); if ( control ) { SendMessage( control, WM_GETTEXT, (WPARAM)sizeof( g_Params.m_szParameters ), (LPARAM)g_Params.m_szParameters ); } GetDlgItemText( m_hDialog, IDC_EVENTNAME, g_Params.m_szName, sizeof( g_Params.m_szName ) ); if ( !g_Params.m_szName[ 0 ] ) { Q_snprintf( g_Params.m_szName, sizeof( g_Params.m_szName ), "Firetrigger %s", g_Params.m_szParameters ); } char szTime[ 32 ]; GetDlgItemText( m_hDialog, IDC_STARTTIME, szTime, sizeof( szTime ) ); g_Params.m_flStartTime = atof( szTime ); GetDlgItemText( m_hDialog, IDC_ENDTIME, szTime, sizeof( szTime ) ); g_Params.m_flEndTime = atof( szTime ); // Parse tokens from tags ParseTags( &g_Params ); EndDialog( hwndDlg, 1 ); } break; case IDCANCEL: EndDialog( hwndDlg, 0 ); break; case IDC_CHECK_ENDTIME: { g_Params.m_bHasEndTime = SendMessage( GetControl( IDC_CHECK_ENDTIME ), BM_GETCHECK, 0, 0 ) == BST_CHECKED ? true : false; if ( !g_Params.m_bHasEndTime ) { ShowWindow( GetControl( IDC_ENDTIME ), SW_HIDE ); } else { ShowWindow( GetControl( IDC_ENDTIME ), SW_RESTORE ); } } break; case IDC_CHECK_RESUMECONDITION: { g_Params.m_bResumeCondition = SendMessage( GetControl( IDC_CHECK_RESUMECONDITION ), BM_GETCHECK, 0, 0 ) == BST_CHECKED ? true : false; } break; case IDC_EVENTCHOICES: { HWND control = (HWND)lParam; if ( control ) { SendMessage( control, WM_GETTEXT, (WPARAM)sizeof( g_Params.m_szParameters ), (LPARAM)g_Params.m_szParameters ); } } break; case IDC_ABSOLUTESTART: { g_Params.m_bUsesTag = false; UpdateTagRadioButtons( &g_Params ); } break; case IDC_RELATIVESTART: { g_Params.m_bUsesTag = true; UpdateTagRadioButtons( &g_Params ); } break; } return TRUE; } return FALSE; }
static void ParseDrawFunction(DviWidget dw, char *buf) { int v[DRAW_ARGS_MAX]; int i, no_move = 0; char *ptr; v[0] = v[1] = v[2] = v[3] = 0; if (buf[0] == '\0') return; ptr = buf+1; for (i = 0; i < DRAW_ARGS_MAX; i++) { if (sscanf(ptr, "%d", v + i) != 1) break; while (*ptr == ' ') ptr++; while (*ptr != '\0' && *ptr != ' ') ptr++; } switch (buf[0]) { case 'l': /* draw a line */ DrawLine(dw, v[0], v[1]); break; case 'c': /* circle */ DrawCircle(dw, v[0]); break; case 'C': DrawFilledCircle(dw, v[0]); break; case 'e': /* ellipse */ DrawEllipse(dw, v[0], v[1]); break; case 'E': DrawFilledEllipse(dw, v[0], v[1]); break; case 'a': /* arc */ DrawArc(dw, v[0], v[1], v[2], v[3]); break; case 'p': DrawPolygon(dw, v, i); break; case 'P': DrawFilledPolygon(dw, v, i); break; case '~': /* wiggly line */ DrawSpline(dw, v, i); break; case 't': dw->dvi.line_thickness = v[0]; break; case 'f': if (i > 0 && v[0] >= 0 && v[0] <= DVI_FILL_MAX) dw->dvi.fill = v[0]; no_move = 1; break; default: #if 0 warning("unknown drawing function %s", buf); #endif no_move = 1; break; } if (!no_move) { if (buf[0] == 'e') { if (i > 0) dw->dvi.state->x += v[0]; } else { while (--i >= 0) { if (i & 1) dw->dvi.state->y += v[i]; else dw->dvi.state->x += v[i]; } } } }
void CCinemaPath::Draw() const { DrawSpline(*this, CVector4D(0.2f, 0.2f, 1.f, 0.5f), 100, true); DrawSpline(m_TargetSpline, CVector4D(1.0f, 0.2f, 0.2f, 0.5f), 100, true); DrawNodes(CVector4D(0.5f, 1.0f, 0.f, 0.5f)); }