~uhh-ssd/+junk/humidity_readout

« back to all changes in this revision

Viewing changes to plplot/plplot-5.9.9/examples/ada/xthick02a.adb

  • Committer: Joachim Erfle
  • Date: 2013-07-24 13:53:41 UTC
  • Revision ID: joachim.erfle@desy.de-20130724135341-1qojpp701zsn009p
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
-- $Id: xthick02a.adb 11680 2011-03-27 17:57:51Z airwin $
 
2
 
 
3
-- Multiple window and color map 0 demo.
 
4
 
 
5
-- Copyright (C) 2007 Alan W. Irwin
 
6
 
 
7
-- This file is part of PLplot.
 
8
 
 
9
-- PLplot is free software; you can redistribute it and/or modify
 
10
-- it under the terms of the GNU Library General Public License as published
 
11
-- by the Free Software Foundation; either version 2 of the License, or
 
12
-- (at your option) any later version.
 
13
 
 
14
-- PLplot is distributed in the hope that it will be useful,
 
15
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
17
-- GNU Library General Public License for more details.
 
18
 
 
19
-- You should have received a copy of the GNU Library General Public License
 
20
-- along with PLplot; if not, write to the Free Software
 
21
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
22
 
 
23
with
 
24
    Ada.Numerics,
 
25
    Ada.Numerics.Long_Elementary_Functions,
 
26
    Ada.Strings,
 
27
    Ada.Strings.Fixed,
 
28
    PLplot_Auxiliary,
 
29
    PLplot;
 
30
 
 
31
use
 
32
    Ada.Numerics,
 
33
    Ada.Numerics.Long_Elementary_Functions,
 
34
    Ada.Strings,
 
35
    Ada.Strings.Fixed,
 
36
    PLplot_Auxiliary,
 
37
    PLplot;
 
38
 
 
39
 
 
40
 
 
41
------------------------------------------------------------------------------
 
42
-- Demonstrates multiple windows and color map 0 palette, both default and
 
43
-- user-modified.
 
44
------------------------------------------------------------------------------
 
45
 
 
46
procedure xthick02a is
 
47
    --------------------------------------------------------------------------
 
48
    -- draw_windows
 
49
    -- Draws a set of numbered boxes with colors according to cmap0 entry.
 
50
    --------------------------------------------------------------------------
 
51
 
 
52
    procedure draw_windows(nw, cmap0_offset : Integer) is
 
53
        vmin, vmax : Long_Float;
 
54
 
 
55
    begin
 
56
        Set_Character_Height(0.0, 3.5);
 
57
        Set_Font_Style(Script_Font);
 
58
 
 
59
        for i in 0..(nw-1) loop
 
60
            Set_Pen_Color(i+cmap0_offset);
 
61
            Advance_To_Subpage(Next_Subpage);
 
62
            vmin := 0.1;
 
63
            vmax := 0.9;
 
64
            for j in 0..2 loop
 
65
                Set_Pen_Width(j + 1);
 
66
                Set_Viewport_Normalized(vmin, vmax, vmin, vmax);
 
67
                Set_Viewport_World(0.0, 1.0, 0.0, 1.0);
 
68
                Box_Around_Viewport("bc", 0.0, 0, "bc", 0.0, 0);
 
69
                vmin := vmin + 0.1;
 
70
                vmax := vmax - 0.1;
 
71
            end loop;
 
72
            Set_Pen_Width(1);
 
73
            Write_Text_World(0.5, 0.5, 1.0, 0.0, 0.5, Trim(Integer'image(i), Left));
 
74
        end loop;
 
75
    end draw_windows;
 
76
 
 
77
    --------------------------------------------------------------------------
 
78
    -- demo1
 
79
    -- Demonstrates multiple windows and default color map 0 palette.
 
80
    --------------------------------------------------------------------------
 
81
 
 
82
    procedure demo1 is
 
83
    begin
 
84
        Begin_New_Page;
 
85
 
 
86
        -- Divide screen into 16 regions
 
87
        Set_Number_Of_Subpages(4, 4);
 
88
        draw_windows(16, 0);
 
89
        Eject_Current_Page;
 
90
    end demo1;
 
91
 
 
92
    --------------------------------------------------------------------------
 
93
    -- demo2
 
94
    -- Demonstrates multiple windows, user-modified color map 0 palette, and
 
95
    -- HLS -> RGB translation.
 
96
    --------------------------------------------------------------------------
 
97
 
 
98
    procedure demo2 is
 
99
        -- Set up cmap0
 
100
        -- Use 100 custom colors in addition to base 16
 
101
        r, g, b: Integer_Array_1D(0..115);
 
102
 
 
103
        -- Min & max lightness values
 
104
        lmin : Long_Float := 0.15;
 
105
        lmax : Long_Float := 0.85;
 
106
        h, l, s : Long_Float;
 
107
        r1, g1, b1 : Long_Float;
 
108
    begin
 
109
        Begin_New_Page;
 
110
 
 
111
        -- Divide screen into 100 regions.
 
112
        Set_Number_Of_Subpages(10, 10);
 
113
 
 
114
        for i in 0..99 loop
 
115
 
 
116
            -- Bounds on HLS, from Set_Color_HLSrgb() commentary
 
117
            -- hue        [0., 360.] degrees
 
118
            -- lightness  [0., 1.]   magnitude
 
119
            -- saturation [0., 1.]   magnitude
 
120
 
 
121
            -- Vary hue uniformly from left to right
 
122
            h := (360.0 / 10.0 ) * Long_Float( i mod 10 );
 
123
            
 
124
            -- Vary lightness uniformly from top to bottom, between min & max.
 
125
            l := lmin + (lmax - lmin) * Long_Float(i / 10) / 9.0;
 
126
            
 
127
            -- Use max saturation.
 
128
            s := 1.0;
 
129
 
 
130
            HLS_To_RGB(h, l, s, r1, g1, b1);
 
131
 
 
132
            -- Ada rounds to nearest integer.  We want to truncate
 
133
            -- approximately like C to match that example.  -0.5 produces
 
134
            -- at least one -1 result (rather than zero) so we subtract
 
135
            -- something with a slightly smaller absolute value.
 
136
            r(i+16) := Integer((r1 * 255.001) - 0.499999999999999);
 
137
            g(i+16) := Integer((g1 * 255.001) - 0.499999999999999);
 
138
            b(i+16) := Integer((b1 * 255.001) - 0.499999999999999);
 
139
        end loop;
 
140
 
 
141
        -- Load default cmap0 colors into our custom set.
 
142
        for i in 0..15 loop
 
143
            Get_Color_RGB(i, r(i), g(i), b(i));
 
144
        end loop;
 
145
 
 
146
        -- Now set cmap0 all at once (faster, since fewer driver calls).
 
147
        Set_Color_Map_0(r, g, b);
 
148
 
 
149
        draw_windows(100, 16);
 
150
 
 
151
        Eject_Current_Page;
 
152
    end demo2;
 
153
 
 
154
begin
 
155
    -- Parse and process command line arguments.
 
156
    Parse_Command_Line_Arguments(Parse_Full); 
 
157
 
 
158
    -- Initialize plplot.
 
159
    Initialize_PLplot;
 
160
 
 
161
    -- Run demos.
 
162
    demo1;
 
163
    demo2;
 
164
 
 
165
    -- Don't forget to call End_PLplot to finish off!
 
166
    End_PLplot;
 
167
 
 
168
end xthick02a;