//---------------------------------------------------------------------------

#ifndef DrawMainFormH
#define DrawMainFormH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ToolWin.hpp>
#include <Dialogs.hpp>
#include <ExtCtrls.hpp>
#include <Menus.hpp>
#include <ImgList.hpp>
#include <Graphics.hpp>
#include <SHDocVw.hpp>
#include <OleCtrls.hpp>

//---------------------------------------------------------------------------
#include <vector>
struct DrawPoint
{
  DrawPoint(int X, int Y, TColor c) : x(X), y(Y), color(c) {};
  int x;
  int y;
  TColor color;
};

class TfrmMain : public TForm
{
__published:  // IDE-managed Components
  TPageControl *pgeMain;
  TTabSheet *shtDraw;
  TTabSheet *shtBrowser;
  TPaintBox *pboxDraw;
  TColorDialog *dlgColor;
  TImageList *lstImages;
  TImage *imgBackground;
  TPopupMenu *popDraw;
  TMenuItem *mnuDrawColor;
  TMenuItem *N1;
  TMenuItem *mnuDrawClear;
  TMenuItem *mnuDrawColorRed;
  TMenuItem *mnuDrawColorGreen;
  TMenuItem *mnuDrawColorBlue;
  TMenuItem *mnuDrawColorCustom;
  TMenuItem *N2;
  TStatusBar *StatusBar1;
  TPanel *pnlBrowser;
  TButton *btnGo;
  TComboBox *lstURLs;
  TTabSheet *shtGDI;
  TPanel *pnlBottom;
  TLabel *Label1;
  TEdit *edtGridSpacing;
  TUpDown *spnGridSpacing;
  TPanel *pnlGDI;
  TPaintBox *pboxGDI;
  TWebBrowser *webBrowser;
  TToolBar *ToolBar1;
  TToolButton *btnHome;
  TToolButton *btnBack;
  TToolButton *btnForward;
  TToolButton *btnReload;
  void __fastcall FormCreate(TObject *Sender);
  void __fastcall pboxDrawMouseMove(TObject *Sender, TShiftState Shift, int X, int Y);
  void __fastcall pboxDrawMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
  void __fastcall pboxDrawMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
  void __fastcall pboxDrawPaint(TObject *Sender);
  void __fastcall mnuDrawColorCustomClick(TObject *Sender);
  void __fastcall mnuDrawClearClick(TObject *Sender);
  void __fastcall btnGoClick(TObject *Sender);
  void __fastcall mnuDrawColorRedClick(TObject *Sender);
  void __fastcall mnuDrawColorGreenClick(TObject *Sender);
  void __fastcall mnuDrawColorBlueClick(TObject *Sender);
  void __fastcall lstURLsKeyPress(TObject *Sender, char &Key);
  void __fastcall lstURLsClick(TObject *Sender);
  void __fastcall pboxGDIPaint(TObject *Sender);
  void __fastcall edtGridSpacingChange(TObject *Sender);
  void __fastcall btnHomeClick(TObject *Sender);
  void __fastcall btnBackClick(TObject *Sender);
  void __fastcall btnForwardClick(TObject *Sender);
  void __fastcall btnReloadClick(TObject *Sender);
  void __fastcall webBrowserBeforeNavigate2(TObject *ASender,
          const IDispatch *pDisp, OleVariant &URL, OleVariant &Flags,
          OleVariant &TargetFrameName, OleVariant &PostData,
          OleVariant &Headers, WordBool &Cancel);
  void __fastcall webBrowserNavigateComplete2(TObject *ASender,
          const IDispatch *pDisp, OleVariant &URL);
private:
  bool drawing_;
  std::vector<std::vector<DrawPoint>* > strokes_;
  int stroke_num_;
  TColor color_;
  void Redraw(void);
  void ClearDrawing(void);
public:
  __fastcall TfrmMain(TComponent* Owner);
  __fastcall ~TfrmMain(void);
};
//---------------------------------------------------------------------------
extern PACKAGE TfrmMain *frmMain;
//---------------------------------------------------------------------------
#endif