本文整理汇总了C++中TXT_CAST_ARG函数的典型用法代码示例。如果您正苦于以下问题:C++ TXT_CAST_ARG函数的具体用法?C++ TXT_CAST_ARG怎么用?C++ TXT_CAST_ARG使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了TXT_CAST_ARG函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TXT_CalcTableSize
static void TXT_CalcTableSize(TXT_UNCAST_ARG(table))
{
TXT_CAST_ARG(txt_table_t, table);
unsigned int *column_widths;
unsigned int *row_heights;
int x, y;
int rows;
rows = TableRows(table);
row_heights = malloc(sizeof(int) * rows);
column_widths = malloc(sizeof(int) * table->columns);
CalcRowColSizes(table, row_heights, column_widths);
table->widget.w = 0;
for (x=0; x<table->columns; ++x)
{
table->widget.w += column_widths[x];
}
table->widget.h = 0;
for (y=0; y<rows; ++y)
{
table->widget.h += row_heights[y];
}
free(row_heights);
free(column_widths);
}
示例2: TXT_KeyInputDrawer
static void TXT_KeyInputDrawer(TXT_UNCAST_ARG(key_input))
{
TXT_CAST_ARG(txt_key_input_t, key_input);
char buf[20];
int i;
if (*key_input->variable == 0)
{
M_StringCopy(buf, "(none)", sizeof(buf));
}
else
{
TXT_GetKeyDescription(*key_input->variable, buf, sizeof(buf));
}
TXT_SetWidgetBG(key_input);
TXT_FGColor(TXT_COLOR_BRIGHT_WHITE);
TXT_DrawString(buf);
for (i=strlen(buf); i<KEY_INPUT_WIDTH; ++i)
{
TXT_DrawString(" ");
}
}
示例3: KeyPressCallback
static int KeyPressCallback(txt_window_t *window, int key,
TXT_UNCAST_ARG(key_input))
{
TXT_CAST_ARG(txt_key_input_t, key_input);
if (key != KEY_ESCAPE)
{
// Got the key press. Save to the variable and close the window.
*key_input->variable = key;
if (key_input->check_conflicts)
{
TXT_EmitSignal(key_input, "set");
}
TXT_CloseWindow(window);
// Re-enable key mappings now that we have the key
TXT_EnableKeyMapping(1);
return 1;
}
else
{
return 0;
}
}
示例4: GenerateModesTable
static void GenerateModesTable(TXT_UNCAST_ARG(widget),
TXT_UNCAST_ARG(modes_table))
{
TXT_CAST_ARG(txt_table_t, modes_table);
char buf[15];
screen_mode_t *modes;
txt_radiobutton_t *rbutton;
int i;
// Pick which modes list to use
if (fullscreen)
{
if (screen_modes_fullscreen == NULL)
{
BuildFullscreenModesList();
}
modes = screen_modes_fullscreen;
}
else if (aspect_ratio_correct)
{
modes = screen_modes_scaled;
}
else
{
modes = screen_modes_unscaled;
}
// Build the table
TXT_ClearTable(modes_table);
TXT_SetColumnWidths(modes_table, 14, 14, 14, 14, 14);
for (i=0; modes[i].w != 0; ++i)
{
// Skip bad fullscreen modes
if (fullscreen && !GoodFullscreenMode(&modes[i]))
{
continue;
}
sprintf(buf, "%ix%i", modes[i].w, modes[i].h);
rbutton = TXT_NewRadioButton(buf, &vidmode, i);
TXT_AddWidget(modes_table, rbutton);
TXT_SignalConnect(rbutton, "selected", ModeSelected, &modes[i]);
}
// Find the nearest mode in the list that matches the current
// settings
vidmode = FindBestMode(modes);
if (vidmode > 0)
{
screen_width = modes[vidmode].w;
screen_height = modes[vidmode].h;
}
}
示例5: TXT_LabelSizeCalc
static void TXT_LabelSizeCalc(TXT_UNCAST_ARG(label))
{
TXT_CAST_ARG(txt_label_t, label);
label->widget.w = label->w;
label->widget.h = label->h;
}
示例6: TXT_EmitSignal
void TXT_EmitSignal(TXT_UNCAST_ARG(widget), char *signal_name)
{
TXT_CAST_ARG(txt_widget_t, widget);
txt_callback_table_t *table;
int i;
table = widget->callback_table;
// Don't destroy the table while we're searching through it
// (one of the callbacks may destroy this window)
TXT_RefCallbackTable(table);
// Search the table for all callbacks with this name and invoke
// the functions.
for (i=0; i<table->num_callbacks; ++i)
{
if (!strcmp(table->callbacks[i].signal_name, signal_name))
{
table->callbacks[i].func(widget, table->callbacks[i].user_data);
}
}
// Finished using the table
TXT_UnrefCallbackTable(table);
}
示例7: TXT_SpinControlSizeCalc
static void TXT_SpinControlSizeCalc(TXT_UNCAST_ARG(spincontrol))
{
TXT_CAST_ARG(txt_spincontrol_t, spincontrol);
spincontrol->widget.w = SpinControlWidth(spincontrol) + 5;
spincontrol->widget.h = 1;
}
示例8: WindowSizeSelected
static void WindowSizeSelected(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(size))
{
TXT_CAST_ARG(window_size_t, size);
window_width = size->w;
window_height = size->h;
}
示例9: AdvancedDisplayConfig
static void AdvancedDisplayConfig(TXT_UNCAST_ARG(widget),
TXT_UNCAST_ARG(sizes_table))
{
TXT_CAST_ARG(txt_table_t, sizes_table);
txt_window_t *window;
txt_checkbox_t *ar_checkbox;
window = TXT_NewWindow("Advanced display options");
TXT_SetWindowHelpURL(window, WINDOW_HELP_URL);
TXT_SetColumnWidths(window, 40);
TXT_AddWidgets(window,
ar_checkbox = TXT_NewCheckBox("Force correct aspect ratio",
&aspect_ratio_correct),
TXT_If(gamemission == heretic || gamemission == hexen
|| gamemission == strife,
TXT_NewCheckBox("Graphical startup", &graphical_startup)),
TXT_If(gamemission == doom || gamemission == heretic
|| gamemission == strife,
TXT_NewCheckBox("Show ENDOOM screen on exit",
&show_endoom)),
#ifdef HAVE_LIBPNG
TXT_NewCheckBox("Save screenshots in PNG format",
&png_screenshots),
#endif
NULL);
TXT_SignalConnect(ar_checkbox, "changed", GenerateSizesTable, sizes_table);
}
示例10: TXT_InputBoxDestructor
static void TXT_InputBoxDestructor(TXT_UNCAST_ARG(inputbox))
{
TXT_CAST_ARG(txt_inputbox_t, inputbox);
StopEditing(inputbox);
free(inputbox->buffer);
}
示例11: TXT_SeparatorDrawer
static void TXT_SeparatorDrawer(TXT_UNCAST_ARG(separator))
{
TXT_CAST_ARG(txt_separator_t, separator);
int x, y;
int w;
w = separator->widget.w;
TXT_GetXY(&x, &y);
// Draw separator. Go back one character and draw two extra
// to overlap the window borders.
TXT_DrawSeparator(x-2, y, w + 4);
if (separator->label != NULL)
{
TXT_GotoXY(x, y);
TXT_FGColor(TXT_COLOR_BRIGHT_GREEN);
TXT_DrawString(" ");
TXT_DrawString(separator->label);
TXT_DrawString(" ");
}
}
示例12: UpdateVideoDriver
static void UpdateVideoDriver(TXT_UNCAST_ARG(widget),
TXT_UNCAST_ARG(modes_table))
{
TXT_CAST_ARG(txt_table_t, modes_table);
if (use_directx)
{
video_driver = "";
}
else
{
video_driver = "windib";
}
// When the video driver is changed, we need to restart the textscreen
// library.
RestartTextscreen();
// Rebuild the list of supported pixel depths.
IdentifyPixelDepths();
SetSelectedBPP();
// Rebuild the video modes list
BuildFullscreenModesList();
GenerateModesTable(NULL, modes_table);
}
示例13: TXT_CAST_ARG
txt_widget_t *TXT_GetSelectedWidget(TXT_UNCAST_ARG(table))
{
TXT_CAST_ARG(txt_table_t, table);
txt_widget_t *result;
int index;
index = table->selected_y * table->columns + table->selected_x;
result = NULL;
if (index >= 0 && index < table->num_widgets)
{
result = table->widgets[index];
if (!IsActualWidget(result))
{
result = NULL;
}
}
if (result != NULL && result->widget_class == &txt_table_class)
{
result = TXT_GetSelectedWidget(result);
}
return result;
}
示例14: TXT_TableSelectable
static int TXT_TableSelectable(TXT_UNCAST_ARG(table))
{
TXT_CAST_ARG(txt_table_t, table);
int i;
// Is the currently-selected cell selectable?
if (SelectableCell(table, table->selected_x, table->selected_y))
{
return 1;
}
// Find the first selectable cell and set selected_x, selected_y.
for (i = 0; i < table->num_widgets; ++i)
{
if (IsActualWidget(table->widgets[i])
&& TXT_SelectableWidget(table->widgets[i]))
{
ChangeSelection(table, i % table->columns, i / table->columns);
return 1;
}
}
// No selectable widgets exist within the table.
return 0;
}
示例15: EventCallback
static int EventCallback(SDL_Event *event, TXT_UNCAST_ARG(joystick_input))
{
TXT_CAST_ARG(txt_joystick_input_t, joystick_input);
// Got the joystick button press?
if (event->type == SDL_JOYBUTTONDOWN)
{
int vbutton, physbutton;
// Before changing anything, remap button configuration into
// canonical form, to avoid conflicts.
CanonicalizeButtons();
vbutton = VirtualButtonForVariable(joystick_input->variable);
physbutton = event->jbutton.button;
if (joystick_input->check_conflicts)
{
ClearVariablesUsingButton(physbutton);
}
// Set mapping.
*joystick_input->variable = vbutton;
joystick_physical_buttons[vbutton] = physbutton;
TXT_CloseWindow(joystick_input->prompt_window);
return 1;
}
return 0;
}