xyplotover.pp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. { Demo showing the use of xyplot overlay. }
  2. program xyplotover;
  3. uses xforms;
  4. {*** Forms and Objects ***}
  5. type
  6. TFD_fff = record
  7. fff : PFL_FORM;
  8. xyplot : PFL_OBJECT;
  9. vdata : pointer;
  10. ldata : longint;
  11. end;
  12. PFD_FFF = ^TFD_fff;
  13. function create_form_fff : PFD_fff;
  14. var
  15. obj : PFL_OBJECT;
  16. fdui : PFD_fff;
  17. begin
  18. new(fdui);
  19. fdui^.fff := fl_bgn_form(FL_NO_BOX, 370, 310);
  20. obj := fl_add_box(FL_UP_BOX,0,0,370,310,'');
  21. obj := fl_add_xyplot(FL_IMPULSE_XYPLOT,10,20,350,260,'');
  22. fdui^.xyplot := obj;
  23. fl_set_object_lalign(obj,(FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE));
  24. obj := fl_add_button(FL_HIDDEN_BUTTON,10,10,350,290,'');
  25. fl_end_form;
  26. create_form_fff:=fdui;
  27. end;
  28. var
  29. i : integer;
  30. xx,yy : array[0..69] of real;
  31. fd_fff : PFD_fff;
  32. begin
  33. fl_initialize(@argc, argv, 'FormDemo', nil, 0);
  34. { fill-in form initialization code }
  35. for i := 0 to 69 do
  36. begin
  37. xx[i] := 3.1415 * i / 8.0;
  38. yy[i] := sin(2 * xx[i]) + cos(xx[i]);
  39. end;
  40. fd_fff := create_form_fff;
  41. fl_set_xyplot_data(fd_fff^.xyplot, xx, yy, 35, '', '','');
  42. fl_add_xyplot_overlay(fd_fff^.xyplot, 1, xx, yy, 70, FL_BLUE);
  43. fl_set_xyplot_overlay_type(fd_fff^.xyplot, 1, FL_NORMAL_XYPLOT);
  44. fl_set_xyplot_xbounds(fd_fff^.xyplot, 0, 3.142 * 69/8.0);
  45. fl_set_xyplot_interpolate(fd_fff^.xyplot, 1, 2, 0.1);
  46. { add inset text }
  47. fl_add_xyplot_text(fd_fff^.xyplot, 2.2, 1.2, 'Original: Impulse',
  48. FL_ALIGN_LEFT , FL_BLACK);
  49. fl_add_xyplot_text(fd_fff^.xyplot, 2.2, 1.0, 'Overlay: Solid',
  50. FL_ALIGN_LEFT, FL_BLUE);
  51. { show the first form }
  52. fl_show_form(fd_fff^.fff,FL_PLACE_MOUSE,FL_TRANSIENT,'XYPlot Overlay');
  53. fl_do_forms();
  54. end.