File: xyover

package info (click to toggle)
libforms 1.0.93sp1-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 11,548 kB
  • ctags: 9,107
  • sloc: ansic: 97,227; sh: 9,236; makefile: 858
file content (109 lines) | stat: -rw-r--r-- 2,790 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*
 * Demo showing the use of xyplot overlay, plot key and
 * PostScript output.
 *
 *  This file is part of xforms package
 *  T.C. Zhao and M. Overmars
 */

#include "forms.h"
#include <stdlib.h>
#include <math.h>

/**** Forms and Objects ****/
typedef struct
{
    FL_FORM *fff;
    void *vdata;
    long ldata;
    FL_OBJECT *xyplot;
} FD_fff;

extern FD_fff *create_form_fff(void);
extern void init_xyplot(FD_fff *);

int
main(int argc, char *argv[])
{
    FD_fff *fd_fff;

    fl_initialize(&argc, argv, "FormDemo", 0, 0);

    fd_fff = create_form_fff();

    /* fill-in form initialization code */
    init_xyplot(fd_fff);

    /* show the first form */
    fl_show_form(fd_fff->fff, FL_PLACE_MOUSE, FL_TRANSIENT, "XYPlot Overlay");

    fl_do_forms();

    if(fl_object_ps_dump(fd_fff->xyplot,"test.ps")>= 0)
      fprintf(stderr,"PostScript output test.ps written\n");

    return 0;
}

void newsymbol(FL_OBJECT *ob, int id,
               FL_POINT *p, int n, int w, int h)
{
      int r = (w + h) / 4;
      FL_POINT *ps = p + n;

      for (; p < ps; p++)
         fl_circf(p->x, p->y, r, FL_WHITE);
 }



void
init_xyplot(FD_fff * fd_fff)
{
    int i;
    float xx[20], yy[20];

    for (i = 0; i <= 10; i++)
    {
	xx[i] = i;
	yy[i] = exp(-(xx[i] - 5) * (xx[i] - 5) / 8);
    }

    fl_set_xyplot_data(fd_fff->xyplot, xx, yy, 8, "Plot Title", "X-Axis", "Y|Axis");
    fl_set_xyplot_ybounds(fd_fff->xyplot, 0, 1.1);
    fl_set_xyplot_xbounds(fd_fff->xyplot, 0, 10);
    fl_add_xyplot_overlay(fd_fff->xyplot, 1, xx, yy, 11, FL_GREEN);
    fl_set_xyplot_overlay_type(fd_fff->xyplot, 1, FL_LINEPOINTS_XYPLOT);
    fl_set_xyplot_interpolate(fd_fff->xyplot, 1, 2, 0.1);
    fl_set_xyplot_symbol(fd_fff->xyplot,-1, newsymbol);

    fl_add_xyplot_text(fd_fff->xyplot, 0.5, 1.0, "Gaussian\nDistribution",
                          FL_ALIGN_RIGHT, FL_WHITE);

    fl_set_xyplot_key(fd_fff->xyplot, 0, "Original");
    fl_set_xyplot_key(fd_fff->xyplot, 1, "Overlay");
    fl_set_xyplot_key_position(fd_fff->xyplot, 9.8, 1.08, FL_ALIGN_BOTTOM_LEFT);
}

FD_fff *
create_form_fff(void)
{
    FL_OBJECT *obj;
    FD_fff *fdui = (FD_fff *) fl_calloc(1, sizeof(*fdui));

    fdui->fff = fl_bgn_form(FL_NO_BOX, 370, 310);
    obj = fl_add_box(FL_UP_BOX, 0, 0, 370, 310, "");
    fdui->xyplot = obj = fl_add_xyplot(FL_IMPULSE_XYPLOT, 10, 20, 350, 260,
        "An XYPlot with overlay");
      fl_set_object_lalign(obj, FL_ALIGN_BOTTOM | FL_ALIGN_INSIDE);
      fl_set_object_lsize(obj, FL_NORMAL_SIZE);
      fl_set_object_boxtype(obj, FL_DOWN_BOX);
      fl_set_object_color(obj, FL_BLACK, FL_YELLOW);
    obj = fl_add_button(FL_HIDDEN_BUTTON, 10, 10, 350, 290, "");
      fl_set_button_shortcut(obj,"qQ", 0);
    fl_end_form();

    return fdui;
}

/*---------------------------------------*/