aboutsummaryrefslogtreecommitdiffstats
path: root/math/femlab/files/patch-ab
blob: 5c3bc76ecc414f717f782d1ecdd4066e0de67547 (plain) (blame)
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
*** source/graph.c.orig	Thu Sep 14 08:42:13 1995
--- source/graph.c	Sat Mar  7 00:14:42 1998
***************
*** 14,21 ****
--- 14,24 ----
   */
  
  #include <stdio.h>
+ #ifdef __STDC__
  #include <stdlib.h>
+ #else
  #include <malloc.h>
+ #endif
  #include <math.h>
  
  
***************
*** 608,614 ****
  void getDrawingScale()
  {
    float xoff, yoff;
!   float scl;
    int width, height;
    int ww;
    int nx, ny, id;
--- 611,617 ----
  void getDrawingScale()
  {
    float xoff, yoff;
!   float iscl;	/* inverse scale */
    int width, height;
    int ww;
    int nx, ny, id;
***************
*** 630,654 ****
    width = width / nx;
    height = height / ny;
  
!   if(state > HAVE_NOTHING){
!     scl  = 1./max(xmax-xmin,ymax-ymin);
!     xoff = -scl*(xmin+.5*(xmax-xmin)-.5/scl);
!     yoff = -scl*(ymin+.5*(ymax-ymin)-.5/scl);
! 
!     xoff =  - xmin*scl*.85;
!     yoff =  - ymin*scl*.85;
! 
!     ww = min(width, height);
!     Xscl  = (int) ((float)ww * 0.85 * scl);
!     Xxoff = (int) ww * xoff ;
!     Xyoff = (int) ww * yoff;
!     Xxoff += (int) (width -  ( Xscl*xmax +Xxoff))/2 + (id+nx-1)%nx *width;
!     Xyoff += (int) (height - ( Xscl*ymax +Xyoff))/2 + (int)(id/(nx+.5)) *height;
!   }
  
    SetDrawArea(drawWindow);
    if(device == PS)
      psGetScale();
  }
  
  void getBoundaryScale(Widget w, void *data)
--- 633,659 ----
    width = width / nx;
    height = height / ny;
  
!   iscl  = max(xmax-xmin,ymax-ymin);
!   if (iscl != 0.0) {
!    if(state > HAVE_NOTHING) {
! /*  These are recalculated ??
!     xoff = .5-(xmin+.5*(xmax-xmin))/iscl;
!     yoff = .5-(ymin+.5*(ymax-ymin))/iscl;
! */
!       xoff =  - xmin*.85/iscl;
!       yoff =  - ymin*.85/iscl;
!       ww = min(width, height);
!       Xscl  = (int) ((float)ww * 0.85 / iscl);
!       Xxoff = (int) ww * xoff ;
!       Xyoff = (int) ww * yoff;
!       Xxoff += (int) (width -  ( Xscl*xmax +Xxoff))/2 + (id+nx-1)%nx *width;
!       Xyoff += (int) (height - ( Xscl*ymax +Xyoff))/2 + (int)(id/(nx+.5)) *height;
!    }
  
    SetDrawArea(drawWindow);
    if(device == PS)
      psGetScale();
+   }
  }
  
  void getBoundaryScale(Widget w, void *data)