Closes #137: Custom Chart position.

This commit is contained in:
Kolan Sh 2017-10-21 20:56:08 +03:00
parent d39cfb7f04
commit ede419392d
3 changed files with 18 additions and 10 deletions

View File

@ -1,8 +1,10 @@
namespace Gtk.CairoChart { namespace Gtk.CairoChart {
public class Chart { public class Chart {
public double width = 0; public double x_min = 0.0;
public double height = 0; public double y_min = 0.0;
public double width = 0.0;
public double height = 0.0;
public Cairo.Context context = null; public Cairo.Context context = null;
@ -52,9 +54,10 @@ namespace Gtk.CairoChart {
public virtual bool draw () { public virtual bool draw () {
cur_x_min = cur_y_min = 0.0; cur_x_min = x_min;
cur_x_max = width; cur_y_min = y_min;
cur_y_max = height; cur_x_max = x_min + width;
cur_y_max = y_min + height;
draw_chart_title (); draw_chart_title ();
check_cur_values (); check_cur_values ();

View File

@ -1,6 +1,7 @@
SET (BinName chart_test) SET (BinName chart_test)
FILE (GLOB_RECURSE BinSources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ChartTest.vala) FILE (GLOB_RECURSE BinSources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ChartTest.vala)
SET (BinPackages gtk+-3.0) SET (BinPackages gtk+-3.0)
SET (BinPkgModules gtk+-3.0)
SET (BinCustomVapis ${CMAKE_BINARY_DIR}/src/${PROJECT_LOWERCASE_NAME}-${MAJOR}.vapi ${CMAKE_SOURCE_DIR}/src/cairo-chart-float128type.vapi) SET (BinCustomVapis ${CMAKE_BINARY_DIR}/src/${PROJECT_LOWERCASE_NAME}-${MAJOR}.vapi ${CMAKE_SOURCE_DIR}/src/cairo-chart-float128type.vapi)
SET (BinLinkLibs ${PROJECT_LOWERCASE_NAME}) SET (BinLinkLibs ${PROJECT_LOWERCASE_NAME})
INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}/src;${CMAKE_SOURCE_DIR}/src") INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}/src;${CMAKE_SOURCE_DIR}/src")

View File

@ -367,15 +367,16 @@ int main (string[] args) {
da.queue_draw_area(0, 0, da.get_allocated_width(), da.get_allocated_height()); da.queue_draw_area(0, 0, da.get_allocated_width(), da.get_allocated_height());
da.button_press_event.connect((event) => { da.button_press_event.connect((event) => {
if (!point_in_chart(chart, event.x, event.y)) return true;
if (event.button == 2 && point_in_chart(chart, event.x, event.y)) { if (event.button == 2) {
draw_selection = true; draw_selection = true;
sel_x0 = sel_x1 = event.x; sel_x0 = sel_x1 = event.x;
sel_y0 = sel_y1 = event.y; sel_y0 = sel_y1 = event.y;
da.queue_draw_area(0, 0, da.get_allocated_width(), da.get_allocated_height()); da.queue_draw_area(0, 0, da.get_allocated_width(), da.get_allocated_height());
} }
if (event.button == 3 && point_in_chart(chart, event.x, event.y)) { if (event.button == 3) {
moving_chart = true; moving_chart = true;
mov_x0 = event.x; mov_x0 = event.x;
mov_y0 = event.y; mov_y0 = event.y;
@ -386,6 +387,8 @@ int main (string[] args) {
}); });
da.button_release_event.connect((event) => { da.button_release_event.connect((event) => {
if (!point_in_chart(chart, event.x, event.y)) return true;
//var ret = chart.button_release_event(event); //var ret = chart.button_release_event(event);
if (event.button == 2) { if (event.button == 2) {
draw_selection = false; draw_selection = false;
@ -398,7 +401,7 @@ int main (string[] args) {
da.queue_draw_area(0, 0, da.get_allocated_width(), da.get_allocated_height()); da.queue_draw_area(0, 0, da.get_allocated_width(), da.get_allocated_height());
} }
if (event.button == 3 && point_in_chart(chart, event.x, event.y)) { if (event.button == 3) {
moving_chart = false; moving_chart = false;
da.queue_draw_area(0, 0, da.get_allocated_width(), da.get_allocated_height()); da.queue_draw_area(0, 0, da.get_allocated_width(), da.get_allocated_height());
} }
@ -406,16 +409,17 @@ int main (string[] args) {
return true; // return ret; return true; // return ret;
}); });
da.motion_notify_event.connect((event) => { da.motion_notify_event.connect((event) => {
if (!point_in_chart(chart, event.x, event.y)) return true;
//var ret = chart.motion_notify_event(event); //var ret = chart.motion_notify_event(event);
if (draw_selection && point_in_chart(chart, event.x, event.y)) { if (draw_selection) {
sel_x1 = event.x; sel_x1 = event.x;
sel_y1 = event.y; sel_y1 = event.y;
da.queue_draw_area(0, 0, da.get_allocated_width(), da.get_allocated_height()); da.queue_draw_area(0, 0, da.get_allocated_width(), da.get_allocated_height());
} }
if (moving_chart && point_in_chart(chart, event.x, event.y)) { if (moving_chart) {
var delta_x = event.x - mov_x0, delta_y = event.y - mov_y0; var delta_x = event.x - mov_x0, delta_y = event.y - mov_y0;
chart.move (delta_x, delta_y); chart.move (delta_x, delta_y);
mov_x0 = event.x; mov_x0 = event.x;