Предыдущая Следующая
276 Фракталы и вейвлеты для сжатия изображений в Действии
Листинг В.2.4. Структуры, используемые графическими окнами МО!
/* graph_setup_rec holdB items usually specified by the
/* user. If you add fields to graph_setup_rec be sure to /*
change the constant GRAPH_SETUP_ITEMS. */
typedef struct {
f loat x_min, x_max,y_min,y_max;
BOOL scale_window__f rom_data, use_nice_number s ;
BOOL label_x_axis , label_y_axis , label^axes, show_title ;
ch ar x_ax i s_l abel, y_ax i s_l abel ;
char hor_axis_label[GR_LABEL_LEN + 1],
vert_axis_label [GR_LABEL_LEN + 1] ,
graph_title [GR__TITLE_LEN + 1] ,
print_header_l [GR__HEADER_FOOTER_LEN+l] ,
print_header_2 [GR_HEADER_FOOTER_LEN+l] ,
print_footer [GR_HEADER_FOOTER_LEN+l]; BOOL show__x_tic__marks , show__y_tic_marks ,
label_x_tic_marks, label_y_tic_marks ; float x_tic^_size,y^tic_size; BOOL show_x_max_min, show__y_max_min / int x_len , y_len , x_dec_jplaces, y__dec_jplaces ; BOOL show_x__grid_lines , show_y_grid__lines ; DWORD line__color, text_color, back_color ; } graph^_setup_rec ;
/* graph_window_struct holds items that are computed as /* specific for this window */ typedef struct {
HDC hDC;
HWND HWindow;
RECT rect,draw_rect,iter_rect; SIZE label_extent;
f loat x__min, y_min , x_max, y_max, x^range, y_range ; int logical_x_max,logical_y__max,start_col,end_col,
title_row,
s tart__row, end_row,
x_min_col, x_max_col, y_min_row, y_max_row,
no_of_rows, no_of_cols,
iter_row_l, iter_row^_2,
i ter_col, done^row,
x_row, x^_center_col,
y_col, y_center_row,
tic_cols,tic^rows,
x_space,y_space; DWORD line^color,text_color,back_color; } graph_window_struct;
ложение В. Библиотека утилит Windows
277
Класс tmdi_graph_window, определенный в Листинге В.2.5, предоставляет оконную среду для графического вывода, но на самом деле он ничего не рисует. Это будет делать производный класс ОКОН приложения. Класс tmdi_graph_window
обеспечивает интерфейс пользователя для получения значений структуры graph_setup_rec. Он также преобразует все, что есть в окне, в растровую картинку, чтобы окно могло быть быстро перерисовано в ответ на сообщение Windows для перерисовки окна (которое может возникнуть, например, при изменении размера окна или его перекрытии другим окном) без повторного вычисления значений для построения графика. Он также обеспечивает возможность копировать эту растровую картинку в буфер обмена Windows (clipboard), чтобы изображение графика можно было импортировать в другие приложения Windows. Предыдущая Следующая
|