59
59
graf1(Width, Height, {Xmin, Ymin, Xmax, Ymax}, Data) ->
63
GrafArea = #graph_area{x = HO, y = 4, width = Width - 2*HO, height = Height - 17},
63
GrafArea = #graph_area{x = HO, y = 4, width = Width - 2*HO, height = Height - 17},
64
64
XticksArea = #graph_area{x = HO, y = Height - 13, width = Width - 2*HO, height = 13},
65
YticksArea = #graph_area{x = 1, y = 4, width = HO, height = Height - 17},
65
YticksArea = #graph_area{x = 1, y = 4, width = HO, height = Height - 17},
69
69
Image = egd:create(Width, Height),
91
90
%% Color, {ForegroundColor, ProcFillColor, PortFillColor}
92
91
%% DataBounds, {Xmin, Ymin, Xmax, Ymax}
94
draw_graf(Gif, [{SX,SY1,SY2}|Data], Colors, GraphArea, {Xmin, _Ymin, Xmax, Ymax}) ->
93
draw_graf(Im, [{SX,SY1,SY2}|Data], Colors, GraphArea, {Xmin, _Ymin, Xmax, Ymax}) ->
96
#graph_area{x = X0, y = Y0, width = Width, height = Height} = GraphArea,
97
{Black, ProcColor, PortColor} = Colors,
95
#graph_area{width = Width, height = Height} = GraphArea,
99
97
DX = (Width)/(Xmax - Xmin),
100
98
DY = (Height)/(Ymax),
103
fun ({X,Y1,Y2}, {PX, PY}) ->
104
NX1 = trunc(X0 + PX*DX - Xmin*DX),
105
NX2 = trunc(X0 + X*DX - Xmin*DX),
107
abs(trunc(NX1) - trunc(NX2)) > 0 ->
108
NY1 = trunc(Y0 + Height - PY*DY),
109
NY2 = trunc(Y0 + Height - Y1*DY),
110
NY3 = trunc(Y0 + Height - (Y2 + Y1)*DY),
112
ZLY = trunc(Y0 + Height),
143
end, {SX, SY2 + SY1}, Data).
100
draw_graf0(Im, Data, Colors, Xmin, GraphArea, DX, DY, SX, SY1 + SY2).
102
draw_graf0(_, [], _, _, _, _, _, _, _) -> ok;
103
draw_graf0(Im, [{X,Y1,Y2}|Data], {B, PrC, PoC}, Xmin, GraphArea, DX, DY, PX, PY) ->
104
#graph_area{x = X0, y = Y0, height = Height} = GraphArea,
105
NX1 = trunc(X0 + PX*DX - Xmin*DX),
106
NX2 = trunc(X0 + X*DX - Xmin*DX),
108
abs(trunc(NX1) - trunc(NX2)) > 0 ->
109
NY1 = trunc(Y0 + Height - PY*DY),
110
NY2 = trunc(Y0 + Height - Y1*DY),
111
NY3 = trunc(Y0 + Height - (Y2 + Y1)*DY),
113
ZLY = trunc(Y0 + Height),
144
draw_graf0(Im, Data, {B, PrC, PoC}, Xmin, GraphArea, DX, DY, OX, OY).
145
146
draw_xticks(Image, Color, XticksArea, {Xmin, Xmax}, Data) ->
146
147
#graph_area{x = X0, y = Y0, width = Width} = XticksArea,
181
draw_yticks(Gif, Color, YticksArea, {_, Ymax}) ->
182
#graph_area{x = X0, y = Y0, width = Width, height = Height} = YticksArea,
183
DY = (Height)/(Ymax),
184
Ys = lists:seq(0, trunc(Ymax)),
182
draw_yticks(Im, Color, TickArea, {_,Ymax}) ->
183
#graph_area{x = X0, y = Y0, width = Width, height = Height} = TickArea,
185
185
X = trunc(X0 + Width),
187
egd:filledRectangle(Gif, {X, trunc(0 + Y0)}, {X, trunc(Y0 + Height)}, Color),
190
Y1 = trunc(Y0 + Height - Y*DY),
191
egd:filledRectangle(Gif, {X - 3, Y1}, {X + 3, Y1}, Color),
192
Text = lists:flatten(io_lib:format("~p", [Y])),
193
text(Gif, {0, Y1 - 4}, Font, Text, Color)
186
Dy = (Height)/(Ymax),
188
Height/(Ymax*12) < 1.0 -> round(1 + Ymax*15/Height);
191
egd:filledRectangle(Im, {X, trunc(0 + Y0)}, {X, trunc(Y0 + Height)}, Color),
192
draw_yticks0(Im, Font, Color, 0, Yts, Ymax, {X, Height, Dy}).
194
draw_yticks0(Im, Font, Color, Yi, Yts, Ymax, Area) when Yi < Ymax ->
195
{X, Height, Dy} = Area,
196
Y = round(Height - (Yi*Dy) + 3),
198
egd:filledRectangle(Im, {X - 3, Y}, {X + 3, Y}, Color),
199
Text = lists:flatten(io_lib:format("~p", [Yi])),
200
text(Im, {0, Y - 4}, Font, Text, Color),
201
draw_yticks0(Im, Font, Color, Yi + Yts, Yts, Ymax, Area);
202
draw_yticks0(_, _, _, _, _, _, _) -> ok.
196
204
%%% -------------------------------------