Пример #1
0
gboolean DrawFunc(gpointer user) {
    ENGD *engd = user;
    GdkGLDrawable *pGLD = 0;
    GdkRectangle rect = {};
    GdkModifierType gmod;
    gint xptr, yptr;
    GdkRegion *creg;
    GdkWindow *hwnd;
    intptr_t *data;
    uint32_t attr;

    cEngineCallback(engd, ECB_GUSR, (intptr_t)&data);
    if (!(hwnd = gtk_widget_get_window(GTK_WIDGET(data[0]))))
        return TRUE;

    gdk_window_get_pointer(hwnd, &xptr, &yptr, &gmod);
    attr = ((gmod & GDK_BUTTON1_MASK)? UFR_LBTN : 0)
         | ((gmod & GDK_BUTTON2_MASK)? UFR_MBTN : 0)
         | ((gmod & GDK_BUTTON3_MASK)? UFR_RBTN : 0)
         | ((gtk_window_is_active(GTK_WINDOW(data[0])))? UFR_MOUS : 0);
    attr = cPrepareFrame(engd, xptr, yptr, attr);
    if (attr & PFR_SKIP)
        usleep(1000);
    if (attr & PFR_HALT)
        return TRUE;
    if (attr & PFR_PICK) {
        rect.width  = (int16_t)(data[2]);
        rect.height = (int16_t)(data[2] >> 16);
    }
Пример #2
0
gboolean FPSFunc(gpointer user) {
    ENGD *engd = user;
    intptr_t *data;
    char fout[64];

    cOutputFPS(engd, fout);
    cEngineCallback(engd, ECB_GUSR, (intptr_t)&data);
    gtk_window_set_title(GTK_WINDOW(data[0]), fout);
    printf("%s\n", fout);
    return TRUE;
}
Пример #3
0
LRESULT APIENTRY WindowProc(HWND hWnd, UINT uMsg, WPARAM wPrm, LPARAM lPrm) {
    switch (uMsg) {
        case WM_CREATE:
            SetWindowLongPtr(hWnd, GWLP_USERDATA,
                            (LONG_PTR)((CREATESTRUCT*)lPrm)->lpCreateParams);
            SetTimer(hWnd, 1, 1000, 0);
            return 0;


        case WM_KEYDOWN:
            if (wPrm == VK_ESCAPE)
        case WM_CLOSE:
                cEngineCallback((ENGD*)GetWindowLongPtr(hWnd, GWLP_USERDATA),
                                 ECB_QUIT, ~0);
            return 0;


        case WM_LBUTTONDOWN:
            SetCapture(hWnd);
            return 0;


        case WM_LBUTTONUP:
            ReleaseCapture();
            return 0;


        case WM_TIMER: {
            char fout[64];

            cOutputFPS((ENGD*)GetWindowLongPtr(hWnd, GWLP_USERDATA), fout);
            SetWindowText(hWnd, fout);
            printf("%s\n", fout);
            return 0;
        }

        case WM_DESTROY:
            KillTimer(hWnd, 1);
            PostQuitMessage(0);
            return 0;


        default:
            return DefWindowProc(hWnd, uMsg, wPrm, lPrm);
    }
}
Пример #4
0
void lShowMainWindow(ENGD *engd, long show) {
    intptr_t *data;

    cEngineCallback(engd, ECB_GUSR, (intptr_t)&data);
    ShowWindow((HWND)data[0], (show)? SW_SHOW : SW_HIDE);
}
Пример #5
0
void lRestartEngine(ENGD *engd) {
    intptr_t *data;

    cEngineCallback(engd, ECB_GUSR, (intptr_t)&data);
    data[0] = 0;
}