Identifizieren von Punkten

Top  Previous  Next

/* Identifizieren von Punkten */

/*============================*/

#include "moskito.h"                              /* ist alles drin */

 

/*

SYSidentifyCoordinate liefert die Koordinaten der  Stuetzpunkte, die der

vom Anwender im Plan identifizierten Koordinate am nächsten liegen.

SYSgetCoordinate liefert die gedrueckte Taste und die Koordinaten im Plan.

Ueber die flags kann die Arbeitsweise der Routinen gesteuert werden.

*/

long int EXPORTENTRY Punkte_identifizieren(int argc, char* argv[], PROOT root)

{

     PIOPIPES         pipes = DBgetIOpipes(root);

     double           xpos, ypos;                          /* Stuetzpktkoordinaten */

     double           ori_xpos, ori_ypos;                  /* echte Koordinaten */

     T_PPOINT         *points = NULL;

     ULONG            flags1, flags2;

     int              iRetValue;

     int              iTaste = 0;

 

     flags1 = SYS_COORD_MARK_IDENTIFIED          /* Markierung setzen   */

            | SYS_COORD_MARKER                   /* eigene Markierung   */

            | SYS_COORD_RETURN_KEY               /* gedrueckte Taste    */

            | SYS_COORD_RETURN_ORIGINAL_COORDS   /* digit. Koordinaten  */

            | SYS_COORD_NO_MESSAGE_TEXT          /* keine Meldungen     */

            ;

     IOwprintf(pipes, "SYSidentifyCoordinate:\n");

     iRetValue = SYSidentifyCoordinate(root, &xpos, &ypos,

                                points, flags1,

                                DCgreenTriangle,

                                &ori_xpos, &ori_ypos, &iTaste);

 

     IOwprintf(pipes, "->Koordinate: %3.4f, %3.4f\n"

        "->Original: %3.4f, %3.4f\n"

        "->Taste: %d\n\n", xpos, ypos, ori_xpos, ori_ypos, iTaste);

 

     flags2 = SYS_COORD_MARK_IDENTIFIED           /* Markierung setzen */

            | SYS_COORD_MARKER                    /* eigene Markierung */

            | SYS_COORD_START_CLS                 /* auto. Einbinden */

            | SYS_COORD_RETURN_ORIGINAL_COORDS    /* digit. Koordinaten */

            | SYS_COORD_NO_MESSAGE_TEXT           /* keine Meldungen */

            ;

     IOwprintf(pipes, "SYSgetCoordinate:\n");

     iRetValue = SYSgetCoordinate(root, &iTaste, &xpos, &ypos, flags2,

                                  DCblueSquare, &ori_xpos, &ori_ypos);

     if (LINK_CON == iTaste) /* z.B. Abbruch des Benutzerdialogs */ ;

 

     IOwprintf(pipes, "->Koordinate: %3.4f, %3.4f\n"

               "->Original: %3.4f, %3.4f\n"

               "->Taste: %d\n\n", xpos, ypos, ori_xpos, ori_ypos, iTaste);

     // ...

 

     return iRetValue;

} // Punkte_identifizieren

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