Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
proview
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Esteban Blanc
proview
Commits
85a52d25
Commit
85a52d25
authored
Sep 18, 2008
by
claes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cursor time was not shown for history curves
parent
a69adcf8
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
189 additions
and
83 deletions
+189
-83
xtt/lib/ge/src/ge_curve.cpp
xtt/lib/ge/src/ge_curve.cpp
+179
-82
xtt/lib/ge/src/ge_curve.h
xtt/lib/ge/src/ge_curve.h
+10
-1
No files found.
xtt/lib/ge/src/ge_curve.cpp
View file @
85a52d25
/*
* Proview $Id: ge_curve.cpp,v 1.
19 2008-07-17 11:21:25
claes Exp $
* Proview $Id: ge_curve.cpp,v 1.
20 2008-09-18 15:00:21
claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
...
...
@@ -229,6 +229,8 @@ int GeCurve::growcurve_cb( GlowCtx *ctx, glow_tEvent event)
int
row
;
double
time
;
if
(
!
(
strcmp
(
curve
->
cd
->
format
[
0
],
"%10t"
)
==
0
||
strcmp
(
curve
->
cd
->
format
[
0
],
"%11t"
)
==
0
))
{
curve
->
last_cursor_x
=
event
->
any
.
x
;
if
(
!
curve
->
cd
->
x_reverse
)
time
=
event
->
any
.
x
*
...
...
@@ -287,6 +289,70 @@ int GeCurve::growcurve_cb( GlowCtx *ctx, glow_tEvent event)
sprintf
(
str
,
"%7.2f"
,
curve
->
cd
->
data
[
0
][
row
]);
grow_SetAnnotation
(
curve
->
cursor_annot
[
0
],
0
,
str
,
strlen
(
str
));
}
else
{
// Time is a date
curve
->
last_cursor_x
=
event
->
any
.
x
;
if
(
!
curve
->
cd
->
x_reverse
)
time
=
curve
->
cd
->
min_value_axis
[
0
]
+
event
->
any
.
x
*
(
curve
->
cd
->
max_value_axis
[
0
]
-
curve
->
cd
->
min_value_axis
[
0
])
/
200
;
else
time
=
curve
->
cd
->
min_value_axis
[
0
]
+
(
200.0
-
event
->
any
.
x
)
*
(
curve
->
cd
->
max_value_axis
[
0
]
-
curve
->
cd
->
min_value_axis
[
0
])
/
200
;
// Approximate row
row
=
int
((
time
-
curve
->
cd
->
min_value
[
0
])
/
(
curve
->
cd
->
max_value
[
0
]
-
curve
->
cd
->
min_value
[
0
])
*
(
curve
->
cd
->
rows
-
1
)
+
0.5
);
if
(
row
>
curve
->
cd
->
rows
-
1
)
row
=
curve
->
cd
->
rows
-
1
;
else
if
(
row
<
0
)
row
=
0
;
else
{
// Find exact row
double
b1
,
b2
;
int
r
=
row
;
for
(
int
i
=
0
;;
i
++
)
{
if
(
r
==
0
)
{
b2
=
(
curve
->
cd
->
data
[
0
][
row
]
+
curve
->
cd
->
data
[
0
][
r
+
1
])
/
2
;
if
(
time
<
b2
)
break
;
r
++
;
}
else
if
(
r
==
curve
->
cd
->
rows
-
1
)
{
b1
=
(
curve
->
cd
->
data
[
0
][
r
]
+
curve
->
cd
->
data
[
0
][
r
-
1
])
/
2
;
if
(
time
>=
b1
)
break
;
r
--
;
}
else
{
b1
=
(
curve
->
cd
->
data
[
0
][
r
]
+
curve
->
cd
->
data
[
0
][
r
-
1
])
/
2
;
b2
=
(
curve
->
cd
->
data
[
0
][
r
]
+
curve
->
cd
->
data
[
0
][
r
+
1
])
/
2
;
if
(
b1
<=
time
&&
time
<
b2
)
break
;
if
(
b1
<=
time
)
r
++
;
else
r
--
;
}
if
(
i
>
curve
->
cd
->
rows
)
{
// Corrupt data, se original row
r
=
row
;
break
;
}
}
row
=
r
;
}
for
(
int
i
=
1
;
i
<
curve
->
cd
->
cols
;
i
++
)
{
sprintf
(
str
,
"%7.2f"
,
curve
->
cd
->
data
[
i
][
row
]);
grow_SetAnnotation
(
curve
->
cursor_annot
[
i
],
0
,
str
,
strlen
(
str
));
}
pwr_tTime
t
;
time_Float64ToD
(
(
pwr_tDeltaTime
*
)
&
t
,
curve
->
cd
->
data
[
0
][
row
]);
time_AtoAscii
(
&
t
,
time_eFormat_DateAndTime
,
str
,
sizeof
(
str
));
grow_SetAnnotation
(
curve
->
cursor_annot
[
0
],
0
,
str
,
strlen
(
str
));
}
break
;
}
case
glow_eEvent_Key_Left
:
...
...
@@ -557,13 +623,21 @@ int GeCurve::init_growaxis_cb( GlowCtx *fctx, void *client_data)
int
GeCurve
::
init_grownames_cb
(
GlowCtx
*
fctx
,
void
*
client_data
)
{
GeCurve
*
curve
=
(
GeCurve
*
)
client_data
;
curve
->
grownames_ctx
=
(
GrowCtx
*
)
fctx
;
grow_tObject
t1
;
grow_sAttributes
grow_attr
;
unsigned
long
mask
;
glow_eDrawType
color
;
double
x
;
int
date
=
(
strcmp
(
curve
->
cd
->
format
[
0
],
"%10t"
)
==
0
||
strcmp
(
curve
->
cd
->
format
[
0
],
"%11t"
)
==
0
)
?
1
:
0
;
int
time_size
;
if
(
date
)
time_size
=
8
;
else
time_size
=
3
;
GeCurve
*
curve
=
(
GeCurve
*
)
client_data
;
curve
->
grownames_ctx
=
(
GrowCtx
*
)
fctx
;
mask
=
0
;
// Double buffer is used for print
...
...
@@ -587,7 +661,7 @@ int GeCurve::init_grownames_cb( GlowCtx *fctx, void *client_data)
// Create nodeclass for mark values
grow_tNodeClass
nc
;
grow_CreateNodeClass
(
curve
->
grownames_ctx
,
"MarkVal"
,
glow_eNodeGroup_Common
,
&
nc
);
grow_AddRect
(
nc
,
""
,
0
,
0
,
3
,
0.75
,
glow_eDrawType_LineGray
,
1
,
0
,
grow_AddRect
(
nc
,
""
,
0
,
0
,
time_size
,
0.75
,
glow_eDrawType_LineGray
,
1
,
0
,
glow_mDisplayLevel_1
,
0
,
0
,
0
,
glow_eDrawType_Line
,
NULL
);
grow_AddAnnot
(
nc
,
0.2
,
0.7
,
0
,
glow_eDrawType_TextHelvetica
,
...
...
@@ -601,28 +675,34 @@ int GeCurve::init_grownames_cb( GlowCtx *fctx, void *client_data)
grow_CreateGrowRect
(
curve
->
grownames_ctx
,
""
,
0
,
0
,
60
,
0.8
,
glow_eDrawType_Line
,
1
,
0
,
glow_mDisplayLevel_1
,
0
,
0
,
1
,
glow_eDrawType_Color32
,
NULL
,
&
o1
);
x
=
0.8
;
grow_CreateGrowText
(
curve
->
grownames_ctx
,
""
,
Lng
::
translate
(
"View"
),
0.8
,
0.6
,
glow_eDrawType_TextHelvetica
,
x
,
0.6
,
glow_eDrawType_TextHelvetica
,
glow_eDrawType_Line
,
2
,
glow_eFont_Helvetica
,
glow_mDisplayLevel_1
,
NULL
,
&
o1
);
x
+=
2.2
;
grow_CreateGrowText
(
curve
->
grownames_ctx
,
""
,
Lng
::
translate
(
"Cursor"
),
3
,
0.6
,
glow_eDrawType_TextHelvetica
,
x
,
0.6
,
glow_eDrawType_TextHelvetica
,
glow_eDrawType_Line
,
2
,
glow_eFont_Helvetica
,
glow_mDisplayLevel_1
,
NULL
,
&
o1
);
x
+=
time_size
+
0.2
;
grow_CreateGrowText
(
curve
->
grownames_ctx
,
""
,
Lng
::
translate
(
"Mark"
),
5.7
,
0.6
,
glow_eDrawType_TextHelvetica
,
x
,
0.6
,
glow_eDrawType_TextHelvetica
,
glow_eDrawType_Line
,
2
,
glow_eFont_Helvetica
,
glow_mDisplayLevel_1
,
NULL
,
&
o1
);
x
+=
time_size
+
0.2
;
grow_CreateGrowText
(
curve
->
grownames_ctx
,
""
,
Lng
::
translate
(
"Unit"
),
9.0
,
0.6
,
glow_eDrawType_TextHelvetica
,
x
,
0.6
,
glow_eDrawType_TextHelvetica
,
glow_eDrawType_Line
,
2
,
glow_eFont_Helvetica
,
glow_mDisplayLevel_1
,
NULL
,
&
o1
);
x
+=
2
;
grow_CreateGrowText
(
curve
->
grownames_ctx
,
""
,
Lng
::
translate
(
"Scale"
),
11
,
0.6
,
glow_eDrawType_TextHelvetica
,
x
,
0.6
,
glow_eDrawType_TextHelvetica
,
glow_eDrawType_Line
,
2
,
glow_eFont_Helvetica
,
glow_mDisplayLevel_1
,
NULL
,
&
o1
);
x
+=
3
;
grow_CreateGrowText
(
curve
->
grownames_ctx
,
""
,
Lng
::
translate
(
"Attribute"
),
14
,
0.6
,
glow_eDrawType_TextHelvetica
,
x
,
0.6
,
glow_eDrawType_TextHelvetica
,
glow_eDrawType_Line
,
2
,
glow_eFont_Helvetica
,
glow_mDisplayLevel_1
,
NULL
,
&
o1
);
...
...
@@ -649,24 +729,30 @@ int GeCurve::init_grownames_cb( GlowCtx *fctx, void *client_data)
grow_CreateGrowRect
(
curve
->
grownames_ctx
,
""
,
1.3
,
(
i
-
0.2
)
+
0.3
,
0.5
,
0.5
,
glow_eDrawType_Line
,
1
,
0
,
glow_mDisplayLevel_1
,
0
,
1
,
1
,
glow_eDrawType_Color32
,
NULL
,
&
curve
->
hide_rect
[
i
]);
// Draw nodes for mark and cursor values
grow_CreateGrowNode
(
curve
->
grownames_ctx
,
""
,
nc
,
2.2
,
(
i
-
0.2
)
+
0.05
,
NULL
,
x
=
2.2
;
grow_CreateGrowNode
(
curve
->
grownames_ctx
,
""
,
nc
,
x
,
(
i
-
0.2
)
+
0.05
,
NULL
,
&
curve
->
cursor_annot
[
i
]);
grow_CreateGrowNode
(
curve
->
grownames_ctx
,
""
,
nc
,
5.4
,
(
i
-
0.2
)
+
0.05
,
NULL
,
x
+=
time_size
+
0.2
;
grow_CreateGrowNode
(
curve
->
grownames_ctx
,
""
,
nc
,
x
,
(
i
-
0.2
)
+
0.05
,
NULL
,
&
curve
->
mark_annot
[
i
]);
// Draw unit
x
+=
time_size
+
0.6
;
grow_CreateGrowText
(
curve
->
grownames_ctx
,
""
,
curve
->
cd
->
unit
[
i
],
9.0
,
(
i
-
0.2
)
+
0.75
,
glow_eDrawType_TextHelvetica
,
x
,
(
i
-
0.2
)
+
0.75
,
glow_eDrawType_TextHelvetica
,
glow_eDrawType_Line
,
2
,
glow_eFont_Helvetica
,
glow_mDisplayLevel_1
,
NULL
,
&
t1
);
// Draw button for scale
grow_CreateGrowRect
(
curve
->
grownames_ctx
,
""
,
11
,
(
i
-
0.2
)
+
0.1
,
1.2
,
0.7
,
x
+=
2
;
grow_CreateGrowRect
(
curve
->
grownames_ctx
,
""
,
x
,
(
i
-
0.2
)
+
0.1
,
1.2
,
0.7
,
glow_eDrawType_Line
,
1
,
0
,
glow_mDisplayLevel_1
,
1
,
1
,
1
,
glow_eDrawType_Color33
,
NULL
,
&
curve
->
scale_rect
[
i
]);
grow_SetObjectShadowWidth
(
curve
->
scale_rect
[
i
],
20
);
// Draw attribute name
x
+=
3
;
grow_CreateGrowText
(
curve
->
grownames_ctx
,
""
,
curve
->
cd
->
name
[
i
],
14.0
,
(
i
-
0.2
)
+
0.75
,
glow_eDrawType_TextHelveticaBold
,
x
,
(
i
-
0.2
)
+
0.75
,
glow_eDrawType_TextHelveticaBold
,
glow_eDrawType_Line
,
2
,
glow_eFont_Helvetica
,
glow_mDisplayLevel_1
,
NULL
,
&
t1
);
grow_SetAnnotation
(
curve
->
cursor_annot
[
i
],
0
,
"0"
,
1
);
...
...
@@ -677,23 +763,28 @@ int GeCurve::init_grownames_cb( GlowCtx *fctx, void *client_data)
grow_CreateGrowRect
(
curve
->
grownames_ctx
,
""
,
0
,
(
curve
->
cd
->
cols
-
0.2
),
60
,
1
,
glow_eDrawType_Line
,
1
,
0
,
glow_mDisplayLevel_1
,
0
,
0
,
1
,
glow_eDrawType_Color32
,
NULL
,
&
o1
);
grow_CreateGrowNode
(
curve
->
grownames_ctx
,
""
,
nc
,
2.2
,
(
curve
->
cd
->
cols
-
0.2
)
+
0.05
,
NULL
,
x
=
2.2
;
grow_CreateGrowNode
(
curve
->
grownames_ctx
,
""
,
nc
,
x
,
(
curve
->
cd
->
cols
-
0.2
)
+
0.05
,
NULL
,
&
curve
->
cursor_annot
[
0
]);
grow_CreateGrowNode
(
curve
->
grownames_ctx
,
""
,
nc
,
5.4
,
(
curve
->
cd
->
cols
-
0.2
)
+
0.05
,
NULL
,
x
+=
time_size
+
0.2
;
grow_CreateGrowNode
(
curve
->
grownames_ctx
,
""
,
nc
,
x
,
(
curve
->
cd
->
cols
-
0.2
)
+
0.05
,
NULL
,
&
curve
->
mark_annot
[
0
]);
// Draw unit
x
+=
time_size
+
0.6
;
grow_CreateGrowText
(
curve
->
grownames_ctx
,
""
,
"s"
,
9.0
,
(
curve
->
cd
->
cols
-
0.2
)
+
0.75
,
glow_eDrawType_TextHelvetica
,
x
,
(
curve
->
cd
->
cols
-
0.2
)
+
0.75
,
glow_eDrawType_TextHelvetica
,
glow_eDrawType_Line
,
2
,
glow_eFont_Helvetica
,
glow_mDisplayLevel_1
,
NULL
,
&
t1
);
// Draw button for scale
grow_CreateGrowRect
(
curve
->
grownames_ctx
,
""
,
11
,
(
curve
->
cd
->
cols
-
0.2
)
+
0.1
,
1.2
,
0.7
,
x
+=
2
;
grow_CreateGrowRect
(
curve
->
grownames_ctx
,
""
,
x
,
(
curve
->
cd
->
cols
-
0.2
)
+
0.1
,
1.2
,
0.7
,
glow_eDrawType_Line
,
1
,
0
,
glow_mDisplayLevel_1
,
1
,
1
,
1
,
glow_eDrawType_Color33
,
NULL
,
&
curve
->
scale_rect
[
0
]);
grow_SetObjectShadowWidth
(
curve
->
scale_rect
[
0
],
20
);
// Draw attribute name
x
+=
3
;
grow_CreateGrowText
(
curve
->
grownames_ctx
,
""
,
Lng
::
translate
(
"Time axis"
),
14.0
,
(
curve
->
cd
->
cols
-
0.2
)
+
0.75
,
glow_eDrawType_TextHelveticaBold
,
x
,
(
curve
->
cd
->
cols
-
0.2
)
+
0.75
,
glow_eDrawType_TextHelveticaBold
,
glow_eDrawType_Line
,
2
,
glow_eFont_Helvetica
,
glow_mDisplayLevel_1
,
NULL
,
&
t1
);
grow_SetAnnotation
(
curve
->
cursor_annot
[
0
],
0
,
"0"
,
1
);
...
...
@@ -883,6 +974,11 @@ int GeCurve::configure_curves()
return
1
;
}
void
GeCurve
::
redraw
()
{
grow_Redraw
(
growcurve_ctx
);
}
void
GeCurve
::
points_added
()
{
int
i
,
idx
;
...
...
@@ -1100,7 +1196,7 @@ GeCurve::GeCurve( void *gc_parent_ctx,
}
GeCurveData
::
GeCurveData
(
curve_eDataType
datatype
)
:
type
(
datatype
),
rows
(
0
),
cols
(
0
),
x_reverse
(
0
)
type
(
datatype
),
rows
(
0
),
cols
(
0
),
x_reverse
(
0
)
,
time_format
(
curve_eTimeFormat_Float
)
{
memset
(
data
,
0
,
sizeof
(
data
));
for
(
int
i
=
0
;
i
<
CURVE_MAX_COLS
;
i
++
)
{
...
...
@@ -1286,11 +1382,12 @@ void GeCurveData::scale( int axis_type, int value_type,
int
min_lines
,
max_lines
;
int
min_zero
,
max_zero
;
int
format_int
,
format_dec
;
int
format_type
=
0
;
int
trendlinequot
=
2
;
int
axlinequot
=
2
;
int
axvaluequot
=
2
;
time_format
=
curve_eTimeFormat_Float
;
// Scale 0 - 10 for boolean
if
(
value_type
==
pwr_eType_Boolean
)
{
maxval
=
10
;
...
...
@@ -1364,7 +1461,7 @@ void GeCurveData::scale( int axis_type, int value_type,
i_value
=
int
(
min_value
/
60
)
*
60
-
60
;
minval
=
i_value
;
min_lines
=
i_value
/
60
;
format_type
=
1
;
time_format
=
curve_eTimeFormat_HourMinute
;
trendlinequot
=
2
;
axlinequot
=
10
;
axvaluequot
=
10
;
...
...
@@ -1382,7 +1479,7 @@ void GeCurveData::scale( int axis_type, int value_type,
min_lines
=
i_value
/
600
;
axlinequot
=
6
;
axvaluequot
=
2
;
format_type
=
1
;
time_format
=
curve_eTimeFormat_HourMinute
;
}
else
if
(
max_value
-
min_value
<
140000
)
{
i_value
=
int
(
max_value
/
600
)
*
600
+
600
;
...
...
@@ -1397,7 +1494,7 @@ void GeCurveData::scale( int axis_type, int value_type,
min_lines
=
i_value
/
600
;
axlinequot
=
6
;
axvaluequot
=
12
;
format_type
=
1
;
time_format
=
curve_eTimeFormat_HourMinute
;
}
else
{
i_value
=
int
(
max_value
/
3600
)
*
3600
+
3600
;
...
...
@@ -1412,7 +1509,7 @@ void GeCurveData::scale( int axis_type, int value_type,
min_lines
=
i_value
/
3600
;
axlinequot
=
2
*
int
((
max_value
-
min_value
)
/
140000
);
axvaluequot
=
2
*
int
((
max_value
-
min_value
)
/
140000
);
format_type
=
2
;
time_format
=
curve_eTimeFormat_DayHour
;
}
}
else
{
...
...
@@ -1537,8 +1634,8 @@ void GeCurveData::scale( int axis_type, int value_type,
*
axis_linelongq
=
axlinequot
;
*
axis_valueq
=
axvaluequot
;
switch
(
format_type
)
{
case
0
:
switch
(
time_format
)
{
case
curve_eTimeFormat_Float
:
// Float format
format_int
=
abs
(
n
)
+
1
;
if
(
n
>
0
)
...
...
@@ -1553,12 +1650,12 @@ void GeCurveData::scale( int axis_type, int value_type,
sprintf
(
format
,
"%%%d.%df"
,
format_int
,
format_dec
);
*
axis_width
=
0.65
*
format_int
+
0.4
;
break
;
case
1
:
case
curve_eTimeFormat_HourMinute
:
// Hour and minute format
strcpy
(
format
,
"%2t"
);
*
axis_width
=
0.65
*
format_int
+
0.4
;
break
;
case
2
:
case
curve_eTimeFormat_DayHour
:
// Days and hour format
strcpy
(
format
,
"%3t"
);
*
axis_width
=
0.65
*
format_int
+
0.4
;
...
...
xtt/lib/ge/src/ge_curve.h
View file @
85a52d25
/*
* Proview $Id: ge_curve.h,v 1.1
1 2008-07-17 11:21:25
claes Exp $
* Proview $Id: ge_curve.h,v 1.1
2 2008-09-18 15:00:21
claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
...
...
@@ -45,6 +45,12 @@ typedef enum {
curve_eAxis_y
}
curve_eAxis
;
typedef
enum
{
curve_eTimeFormat_Float
,
curve_eTimeFormat_HourMinute
,
curve_eTimeFormat_DayHour
}
curve_eTimeFormat
;
//! Contains data for the curves.
class
GeCurveData
{
public:
...
...
@@ -71,6 +77,8 @@ class GeCurveData {
double
axis_width
[
CURVE_MAX_COLS
];
char
format
[
CURVE_MAX_COLS
][
20
];
int
x_reverse
;
curve_eTimeFormat
time_format
;
void
get_borders
();
void
get_default_axis
();
void
select_color
(
bool
dark_bg
);
...
...
@@ -156,6 +164,7 @@ class GeCurve {
void
activate_help
();
void
activate_minmax_ok
(
double
min_value
,
double
max_value
);
void
set_curvedata
(
GeCurveData
*
curve_data
);
void
redraw
();
static
int
growcurve_cb
(
GlowCtx
*
ctx
,
glow_tEvent
event
);
static
int
init_growcurve_cb
(
GlowCtx
*
fctx
,
void
*
client_data
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment