/* Starchart Window */ #ifndef STARCHARTWIN_H #define STARCHARTWIN_H #include "../include/osw-x.h" #include "../include/widget.h" #include "../include/objects.h" typedef struct _starchart_win_struct starchart_win_struct; #define STARCHART_WIN(p) ((starchart_win_struct *)(p)) /* * Drag Operations: */ #define SCHT_DRAG_OP_NONE 0 #define SCHT_DRAG_OP_TRANSLATE 1 #define SCHT_DRAG_OP_ZOOM 2 #define SCHT_DRAG_OP_MEASURE 3 /* * Draw Amounts: */ #define SCHT_DRAW_AMOUNT_COMPLETE 0 #define SCHT_DRAW_AMOUNT_VIEW 1 /* * Starchart Window: */ struct _starchart_win_struct { bool_t map_state, has_focus, disabled; int freeze_count, busy_count; int x, y; unsigned int width, height; visibility_t visibility_state; win_t toplevel; menu_bar_struct mb; win_t view; pixmap_t view_buf; menu_struct menu; /* Right-click menu */ prompt_struct name_filter_prompt, empire_filter_prompt, x_prompt, y_prompt, sect_x_prompt, sect_y_prompt; float zoom; check_button_struct follow_player_cb; push_button_struct zoom_in_btn, zoom_out_btn, jump_to_player_btn; progress_bar_struct pbar; sw_legend_struct legend; xsw_object_struct **object; int total_objects; int selected_object; /* Pointer drag states (true if in drag) */ int drag_op; /* One of SCHT_DRAG_OP_* */ int button_last_x, button_last_y; /* Measuring (in units of pixels) */ int measure_start_x, measure_start_y, measure_end_x, measure_end_y; /* DND */ atom_t target_string; atom_t dnd_action; win_t dnd_tar_w; int dnd_x, /* In window coordinates on the view */ dnd_y; /* Timmers */ time_t last_timeout, /* In ms */ next_player_follow, /* In ms */ next_filter_update; /* In ms */ }; extern "C" void SChtTimeoutCB(starchart_win_struct *cht); extern "C" void SChtOverlay(starchart_win_struct *cht, const char *path); extern "C" void SChtOpen(starchart_win_struct *cht, const char *path); extern "C" void SChtSave( starchart_win_struct *cht, const char *path, const bool_t confirm_overwrite ); extern "C" void SChtSaveImage( starchart_win_struct *cht, const char *path, const bool_t confirm_overwrite ); extern "C" void SChtClear(starchart_win_struct *cht); extern "C" void SChtZoomIn(starchart_win_struct *cht); extern "C" void SChtZoomOut(starchart_win_struct *cht); extern "C" void SChtJumpToPlayer(starchart_win_struct *cht); extern "C" void SChtSetLegend( starchart_win_struct *cht, sw_legend_struct *legend ); extern "C" int SChtAddObject( starchart_win_struct *cht, const int obj_num, const int type, const int imgref_num, const long size, const long sect_x, const long sect_y, const long sect_z, const float x, const float y, const float z, const float heading, const float pitch, const float bank ); extern "C" void SChtSetObjectName( starchart_win_struct *cht, const char *name ); extern "C" void SChtSetObjectEmpire( starchart_win_struct *cht, const char *empire ); extern "C" void SChtRecycleObject( starchart_win_struct *cht, int obj_num ); extern "C" starchart_win_struct *SChtNew(void); extern "C" void SChtResize(starchart_win_struct *cht); extern "C" void SChtQueueResize(starchart_win_struct *cht); extern "C" void SChtDraw(starchart_win_struct *cht, int amount); extern "C" void SChtQueueDrawView(starchart_win_struct *cht); extern "C" void SChtQueueDraw(starchart_win_struct *cht); extern "C" int SChtManage( starchart_win_struct *cht, event_t *event, const time_t cur_ms, const time_t cur_sec, const float tc ); extern "C" void SChtMap(starchart_win_struct *cht); extern "C" void SChtUnmap(starchart_win_struct *cht); extern "C" void SChtDelete(starchart_win_struct *cht); #endif /* STARCHARTWIN_H */