uiDrawPath *uiDrawNewPath(uiDrawFillMode fillmode) { uiDrawPath *p; HRESULT hr; p = uiNew(uiDrawPath); hr = ID2D1Factory_CreatePathGeometry(d2dfactory, &(p->path)); if (hr != S_OK) logHRESULT("error creating path in uiDrawNewPath()", hr); hr = ID2D1PathGeometry_Open(p->path, &(p->sink)); if (hr != S_OK) logHRESULT("error opening path in uiDrawNewPath()", hr); switch (fillmode) { case uiDrawFillModeWinding: ID2D1GeometrySink_SetFillMode(p->sink, D2D1_FILL_MODE_WINDING); break; case uiDrawFillModeAlternate: ID2D1GeometrySink_SetFillMode(p->sink, D2D1_FILL_MODE_ALTERNATE); break; } return p; }
uiMenuItem *uiMenuAppendSubmenu(uiMenu *m, uiMenu* child) { uiMenuItem *item; if (menusFinalized) userbug("You cannot create a new menu item after menus have been finalized."); item = uiNew(uiMenuItem); g_array_append_val(m->items, item); item->type = typeSubmenu; item->name = child->name; uiMenuItemOnClicked(item, defaultOnClicked, NULL); // checkme item->gtype = GTK_TYPE_MENU_ITEM; item->windows = g_hash_table_new(g_direct_hash, g_direct_equal); item->popupchild = child; child->ischild = TRUE; return item; }
uiDrawContext *newContext(cairo_t *cr) { uiDrawContext *c; c = uiNew(uiDrawContext); c->cr = cr; return c; }
uiDrawContext *newContext(ID2D1RenderTarget *rt) { uiDrawContext *c; c = uiNew(uiDrawContext); c->rt = rt; initStates(c); resetTarget(c->rt); return c; }
static uiMenuItem *newItem(uiMenu *m, int type, const char *name) { uiMenuItem *item; if (menusFinalized) userbug("You cannot create a new menu item after menus have been finalized."); item = uiNew(uiMenuItem); g_array_append_val(m->items, item); item->type = type; switch (item->type) { case typeQuit: item->name = g_strdup("Quit"); break; case typePreferences: item->name = g_strdup("Preferences..."); break; case typeAbout: item->name = g_strdup("About"); break; case typeSeparator: break; default: item->name = g_strdup(name); break; } if (item->type == typeQuit) { // can't call uiMenuItemOnClicked() here item->onClicked = onQuitClicked; item->onClickedData = NULL; } else uiMenuItemOnClicked(item, defaultOnClicked, NULL); switch (item->type) { case typeCheckbox: item->gtype = GTK_TYPE_CHECK_MENU_ITEM; break; case typeSeparator: item->gtype = GTK_TYPE_SEPARATOR_MENU_ITEM; break; default: item->gtype = GTK_TYPE_MENU_ITEM; break; } item->windows = g_hash_table_new(g_direct_hash, g_direct_equal); item->popupchild = NULL; return item; }
uiControl *uiNewHorizontalStack(void) { stack *s; s = uiNew(stack); s->control.handle = stackHandle; s->control.setParent = stackSetParent; s->control.preferredSize = stackPreferredSize; s->control.resize = stackResize; return (uiControl *) s; }
uiWindow *uiNewWindow(char *title, int width, int height) { uiWindow *w; w = uiNew(uiWindow); w->widget = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(w->widget), title); gtk_window_resize(GTK_WINDOW(w->widget), width, height); g_signal_connect(w->widget, "destroy", G_CALLBACK(onDestroy), w); w->container = newContainer(); gtk_container_add(GTK_CONTAINER(w->widget), w->container); return w; }
static uiMenuItem *newItem(uiMenu *m, int type, const char *name) { uiMenuItem *item; if (menusFinalized) userbug("You can not create a new menu item after menus have been finalized."); if (m->len >= m->cap) { m->cap += grow; m->items = (uiMenuItem **) uiRealloc(m->items, m->cap * sizeof (uiMenuItem *), "uiMenuitem *[]"); } item = uiNew(uiMenuItem); m->items[m->len] = item; m->len++; item->type = type; switch (item->type) { case typeQuit: item->name = toUTF16("Quit"); break; case typePreferences: item->name = toUTF16("Preferences..."); break; case typeAbout: item->name = toUTF16("About"); break; case typeSeparator: break; default: item->name = toUTF16(name); break; } if (item->type != typeSeparator) { item->id = curID; curID++; } if (item->type == typeQuit) { // can't call uiMenuItemOnClicked() here item->onClicked = onQuitClicked; item->onClickedData = NULL; } else uiMenuItemOnClicked(item, defaultOnClicked, NULL); return item; }
uiMenu *uiNewMenu(const char *name) { uiMenu *m; if (menusFinalized) complain("attempt to create a new menu after menus have been finalized"); if (menus == NULL) menus = g_array_new(FALSE, TRUE, sizeof (uiMenu *)); m = uiNew(uiMenu); uiTyped(m)->Type = uiMenuType(); g_array_append_val(menus, m); m->name = g_strdup(name); m->items = g_array_new(FALSE, TRUE, sizeof (uiMenuItem *)); return m; }
uiMenu *uiNewMenu(const char *name) { uiMenu *m; if (menusFinalized) userbug("You can not create a new menu after menus have been finalized."); if (len >= cap) { cap += grow; menus = (uiMenu **) uiRealloc(menus, cap * sizeof (uiMenu *), "uiMenu *[]"); } m = uiNew(uiMenu); menus[len] = m; len++; m->name = toUTF16(name); return m; }
uiMenu *uiNewMenu(const char *name) { uiMenu *m; if (menusFinalized) userbug("You cannot create a new menu after menus have been finalized."); if (menus == NULL) menus = g_array_new(FALSE, TRUE, sizeof (uiMenu *)); m = uiNew(uiMenu); g_array_append_val(menus, m); m->id = nmenus; nmenus++; m->name = g_strdup(name); m->items = g_array_new(FALSE, TRUE, sizeof (uiMenuItem *)); m->ischild = FALSE; return m; }
uiWindowsSizing *uiWindowsNewSizing(HWND hwnd) { uiWindowsSizing *d; HDC dc; HFONT prevfont; TEXTMETRICW tm; SIZE size; d = uiNew(uiWindowsSizing); dc = GetDC(hwnd); if (dc == NULL) logLastError("error getting DC in uiWindowsNewSizing()"); prevfont = (HFONT) SelectObject(dc, hMessageFont); if (prevfont == NULL) logLastError("error loading control font into device context in uiWindowsNewSizing()"); ZeroMemory(&tm, sizeof (TEXTMETRICW)); if (GetTextMetricsW(dc, &tm) == 0) logLastError("error getting text metrics in uiWindowsNewSizing()"); if (GetTextExtentPoint32W(dc, L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", 52, &size) == 0) logLastError("error getting text extent point in uiWindowsNewSizing()"); d->BaseX = (int) ((size.cx / 26 + 1) / 2); d->BaseY = (int) tm.tmHeight; d->InternalLeading = tm.tmInternalLeading; if (SelectObject(dc, prevfont) != hMessageFont) logLastError("error restoring previous font into device context in uiWindowsSizing()"); if (ReleaseDC(hwnd, dc) == 0) logLastError("error releasing DC in uiWindowsSizing()"); d->XPadding = uiWindowsDlgUnitsToX(winXPadding, d->BaseX); d->YPadding = uiWindowsDlgUnitsToY(winYPadding, d->BaseY); return d; }