From f31a1f7f4aeb09bc09d49944daaf2f38fddd94e7 Mon Sep 17 00:00:00 2001 From: Andrew Hannam Date: Thu, 13 Dec 2012 23:05:49 +1000 Subject: [PATCH] Updated graph demo to show more Added extra line segment graphing to the graph demo --- demos/modules/graph/main.c | 24 +++++++++++++++--------- demos/modules/graph/result-640x480.gif | Bin 10823 -> 11300 bytes 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/demos/modules/graph/main.c b/demos/modules/graph/main.c index 04d0b9b8..544d4c2b 100644 --- a/demos/modules/graph/main.c +++ b/demos/modules/graph/main.c @@ -3,12 +3,12 @@ #include "gfx.h" #include "math.h" -int data[5][2] = { - { 0, 0 }, - { 10, 10 }, - { 20, 20 }, - { 30, 30 }, - { 40, 40 } +const GGraphPoint data[5] = { + { -40, -40 }, + { 70, 40 }, + { 140, 60 }, + { 210, 60 }, + { 280, 200 } }; GGraphObject g; @@ -24,8 +24,8 @@ GGraphStyle GraphStyle1 = { }; GGraphStyle GraphStyle2 = { - { GGRAPH_POINT_DOT, 0, Green }, // point - { GGRAPH_LINE_NONE, 2, Gray }, // line + { GGRAPH_POINT_SQUARE, 5, Red }, // point + { GGRAPH_LINE_DOT, 2, Pink }, // line { GGRAPH_LINE_SOLID, 0, White }, // x axis { GGRAPH_LINE_SOLID, 0, White }, // y axis { GGRAPH_LINE_DASH, 5, Gray, 50 }, // x grid @@ -53,11 +53,17 @@ int main(void) { gwinGraphDrawPoint(gh, i-gwinGetWidth(gh)/2, 80*sin(2*0.2*M_PI*i/180)); gwinGraphStartSet(gh); - gwinGraphSetStyle(gh, &GraphStyle2); + GraphStyle1.point.color = Green; + gwinGraphSetStyle(gh, &GraphStyle1); for(i = 0; i < gwinGetWidth(gh)*5; i++) gwinGraphDrawPoint(gh, i/5-gwinGetWidth(gh)/2, 95*sin(2*0.2*M_PI*i/180)); + gwinGraphStartSet(gh); + gwinGraphSetStyle(gh, &GraphStyle2); + + gwinGraphDrawPoints(gh, data, sizeof(data)/sizeof(data[0])); + while(TRUE) { chThdSleepMilliseconds(100); } diff --git a/demos/modules/graph/result-640x480.gif b/demos/modules/graph/result-640x480.gif index 5d5152f516e780ba52b64c9bba115ab1ff15bfe0..d96c7c5aee8c7281759bc7bc43456729ceaee1c9 100644 GIT binary patch delta 9976 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 C|K^+k delta 9495 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