~ubuntu-branches/ubuntu/precise/grass/precise

« back to all changes in this revision

Viewing changes to imagery/i.ortho.photo/photo.camera/mod_cam_info.c

  • Committer: Bazaar Package Importer
  • Author(s): Francesco Paolo Lovergine
  • Date: 2011-04-13 17:08:41 UTC
  • mfrom: (8.1.7 sid)
  • Revision ID: james.westby@ubuntu.com-20110413170841-ss1t9bic0d0uq0gz
Tags: 6.4.1-1
* New upstream version.
* Now build-dep on libjpeg-dev and current libreadline6-dev.
* Removed patch swig: obsolete.
* Policy bumped to 3.9.2, without changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include <stdlib.h>
2
 
#include <stdio.h>
3
 
#include <string.h>
4
 
#include <grass/vask.h>
5
 
#include "orthophoto.h"
6
 
#include "globals.h"
7
 
 
8
 
#define NLINES 10
9
 
 
10
 
int mod_cam_info(int have_old, struct Ortho_Camera_File_Ref *cam_info)
11
 
{
12
 
    long fidnum[NLINES];
13
 
    char next[20];
14
 
    char next_line[20];
15
 
    int i;
16
 
    int atnum;
17
 
    int line;
18
 
    int startfid;
19
 
    int endfid;
20
 
 
21
 
    if (!have_old)
22
 
        strcpy(cam_info->cam_name, "DBA SYSTEMS CAMERA");
23
 
 
24
 
    V_clear();
25
 
    V_line(1, "                   Please provide the following information:");
26
 
    V_line(2,
27
 
           "+------------------------------------------------------------------------------+");
28
 
    V_line(4, "        Camera Name");
29
 
    V_line(5, "        Camera Identification");
30
 
    V_line(6, "        Calibrated Focal Length mm.");
31
 
    V_line(7, "        Point of Symmetry: X-coordinate mm.");
32
 
    V_line(8, "        Point of Symmetry: Y-coordinate mm.");
33
 
    V_line(9, "        Maximum number of fiducial or reseau marks");
34
 
    V_line(11,
35
 
           "+-----------------------------------------------------------------------------+");
36
 
    V_ques(cam_info->cam_name, 's', 4, 55, 20 - 1);
37
 
    V_ques(cam_info->cam_id, 's', 5, 55, 20 - 1);
38
 
    V_ques(&(cam_info->CFL), 'd', 6, 55, 20 - 1);
39
 
    V_ques(&(cam_info->Xp), 'd', 7, 55, 20 - 1);
40
 
    V_ques(&(cam_info->Yp), 'd', 8, 55, 20 - 1);
41
 
    V_ques(&(cam_info->num_fid), 'i', 9, 55, 20 - 1);
42
 
    V_intrpt_ok();
43
 
    if (!V_call())
44
 
        exit(0);
45
 
 
46
 
    /* get fiducail or reseau info NUMLINES at a time */
47
 
    startfid = 0;
48
 
    while (startfid >= 0 && startfid < cam_info->num_fid) {
49
 
        V_clear();
50
 
        {
51
 
            V_line(1,
52
 
                   "               Please provide the following information:");
53
 
            V_line(2,
54
 
                   "+--------------------------------------------------------------------------+");
55
 
            V_line(4,
56
 
                   "            Fid#     Fid Id          Xf              Yf");
57
 
        }
58
 
        endfid =
59
 
            startfid + NLINES <=
60
 
            cam_info->num_fid + 1 ? startfid + NLINES : cam_info->num_fid;
61
 
 
62
 
        atnum = 0;
63
 
        line = 6;
64
 
        for (i = startfid; i < endfid; i++) {
65
 
 
66
 
            fidnum[atnum] = i + 1;
67
 
 
68
 
            V_const(&fidnum[atnum], 'i', line, 13, 5);
69
 
            V_ques(cam_info->fiducials[i].fid_id, 's', line, 21, 6);
70
 
            V_ques(&(cam_info->fiducials[i].Xf), 'd', line, 33, 10);
71
 
            V_ques(&(cam_info->fiducials[i].Yf), 'd', line, 49, 10);
72
 
 
73
 
            atnum++;
74
 
            line++;
75
 
        }
76
 
 
77
 
        line += 2;
78
 
        *next = 0;
79
 
 
80
 
        if (endfid >= cam_info->num_fid)
81
 
            strcpy(next, "end");
82
 
        else
83
 
            sprintf(next, "%d", endfid);
84
 
        sprintf(next_line, next);
85
 
        V_line(line, "                            Next:");
86
 
        V_ques(next, 's', line, 34, 5);
87
 
        V_line(line + 2,
88
 
               "+--------------------------------------------------------------------------+");
89
 
        V_intrpt_ok();
90
 
        if (!V_call())
91
 
            exit(0);
92
 
 
93
 
        if (*next == 0)
94
 
            break;
95
 
        if (strcmp(next, "end") == 0)
96
 
            break;
97
 
        if (sscanf(next, "%d", &endfid) != 1)
98
 
            continue;
99
 
        if (endfid < 0)
100
 
            endfid = 0;
101
 
        if (endfid > cam_info->num_fid) {
102
 
            endfid = cam_info->num_fid - NLINES + 1;
103
 
            if (endfid < 0)
104
 
                endfid = 0;
105
 
        }
106
 
 
107
 
        startfid = endfid;
108
 
    }
109
 
 
110
 
    return 0;
111
 
}