ETHZ_Logo RAMSES_Logo_Right   RAMSES   RAMSES_Logo_Left Systems Ecology  
Start    search button      Modules:   A-Z   Function   Layer        QuickRefs:   DM   AuxLib   AuxLibE   SciLib   EasyMW   MW   ISIS   RMSLib

DEFINITION MODULE DrawAgePyram;

  (*******************************************************************

    Module  DrawAgePyram     (Version 1.0)

      Copyright (c) 1990-2006 by Andreas Fischlin, Harald Bugmann and
      ETH Zurich.

    Purpose   Draws within a separate window an age pyramid for
              both sexes of an age structured population.

    Remarks   The programming style is object oriented, i.e.
              it is sufficient to call MakePyramid, and all the age
              pyramid's values will be defined, since inherited from a
              mother age pyramid. Restoration and redefinition of window
              content respectively window size implementations will
              redraw the age pyramid from the client data, hence notice
              that if they should have changed their values in the
              meantime, or should no longer exist, the drawing will
              change also or might even fail (latter case).  Furthermore
              note that the implementations of most procedures operating
              on age pyramids require a preceeding successful
              instantiation of the object (i.e. this is a precondition
              for all procedures with value parameter AgePyramid, but the
              existence of the object is not alwyas tested).

              Typical usage with ModelWorks (source code excerpt):
              ----------------------------------------------------

              FROM DrawAgePyram IMPORT MakePyramid, ShowPyramidWindow,
                                       DrawPyramid, AgePyramid;
              FROM SimBase      IMPORT ..., DeclClientMonitoring, ...;

              ...

              CONST maxClass = 10;

              VAR ap : AgePyramid;
                males, females : ARRAY [1..maxClass] OF REAL;

              PROCEDURE Dummy; BEGIN END Dummy;

              PROCEDURE PyramidMonitoring;
              BEGIN
                ShowPyramidWindow(ap);
                DrawPyramid (ap, females, males);
              END PyramidMonitoring;

              ...

              PROCEDURE ModelDeclaration;
              BEGIN
                ...
                DeclClientMonitoring(Dummy, PyramidMonitoring, Dummy);
                MakePyramid( ap );
                ...
              END ModelDeclaration;


    Programming

      o Design
        Andreas Fischlin          29/05/1990

      o Implementation
        Andreas Fischlin          29/05/1990
        Harald Bugmann            22/06/1990


    ETH Zurich
    Systems Ecology
    CHN E 35.1
    Universitaetstrasse 16
    8092 Zurich
    SWITZERLAND

    URLs:
        <mailto:RAMSES@env.ethz.ch>
        <http://www.sysecol.ethz.ch>
        <http://www.sysecol.ethz.ch/SimSoftware/RAMSES>


    Last revision of definition:  16/11/1992  HB

  *******************************************************************)


  FROM DMWindows IMPORT WindowFrame;


  TYPE AgePyramid;

  PROCEDURE MakePyramid ( VAR ap: AgePyramid );

  PROCEDURE SetPyramidParameters ( ap: AgePyramid; defltPlace, place: WindowFrame;
                                   title, femaleLabel, maleLabel: ARRAY OF CHAR;
                                   xMax: REAL; yTickInterval: INTEGER );
    (* Meaning of parameters:
       - defltPlace, place, title: default place, current place and title of the
         pyramid window
       - femaleLabel, maleLabel: x axis labels
       - xMax: fixes the maximum value of the x axis to xMax, so that absolute age
         pyramids can be compared. IF xMax ≤0, the scaling of the x axis is
         automatically updated to the highest number found in any age class.
         By default, xMax is 0 (automatic update)
       - yTickInterval: interval for ticks and labels on the y axis of the pyramid;
         the parameter is ignored if ≤0; the default yTickInterval is 10
     *)

  PROCEDURE GetPyramidParameters ( ap: AgePyramid; VAR defltPlace, place: WindowFrame;
                                   VAR title, femaleLabel, maleLabel: ARRAY OF CHAR;
                                   VAR xMax: REAL; VAR yTickInterval: INTEGER );

  PROCEDURE ResetPyramid ( ap: AgePyramid );
    (* makes default location and size current *)

  PROCEDURE ShowPyramidWindow ( ap: AgePyramid );
  PROCEDURE HidePyramidWindow ( ap: AgePyramid );

  PROCEDURE DrawPyramid ( ap: AgePyramid; VAR females, males: ARRAY OF REAL);
    (* VAR for speed-up reasons only *)

  PROCEDURE DiscardPyramid ( VAR ap: AgePyramid );

END DrawAgePyram.

  Contact RAMSES@env.ethz.ch Last updated: 25-Jul-2011 [Top of page]