summaryrefslogtreecommitdiff
path: root/lib/wx/api_gen/wx_extra/wxPrintout.c_src
blob: 336ddf05be733bcc74b001c9f111012c0a2e4811 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<<wxPrintout_class
class EwxPrintout : public wxPrintout
{
 public:
 EwxPrintout(wxString Title, int onPrintP, int onPrepareP,
	     int onBeginP, int onEndP,
	     int onBeginD, int onEndD,
	     int hasP, int getPageI) :
    wxPrintout(Title),
	onPrintPage(onPrintP), onPreparePrinting(onPrepareP),
	onBeginPrinting(onBeginP), onEndPrinting(onEndP),
	onBeginDocument(onBeginD), onEndDocument(onEndD), hasPage(hasP), getPageInfo(getPageI)
	{ } ;

    ~EwxPrintout();

    bool OnBeginDocument(int startPage, int endPage);
    void OnEndDocument();
    void OnBeginPrinting();
    void OnEndPrinting();

    void OnPreparePrinting();

    bool HasPage(int page);
    bool OnPrintPage(int page);
    void GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *pageTo);

    int onPrintPage;
    int onPreparePrinting;
    int onBeginPrinting;
    int onEndPrinting;
    int onBeginDocument;
    int onEndDocument;
    int hasPage;
    int getPageInfo;

    wxe_me_ref * me_ref;
};

wxPrintout_class>>


<<wxPrintout_new
// wxPrintout::wxPrintout taylormade
void ~s(WxeApp *app, wxeMemEnv *memenv, wxeCommand& Ecmd)
{
  int onPreparePrinting=0,onBeginPrinting=0,onEndPrinting=0,onBeginDocument=0,
    onEndDocument=0,hasPage=0,getPageInfo=0;

  wxString title= wxT("Printout");
  ErlNifEnv *env = Ecmd.env;
  ERL_NIF_TERM * argv = Ecmd.args;
  ErlNifBinary title_bin;
  int onPrintPage;
  if(!enif_inspect_binary(env, argv[0], &title_bin)) Badarg("title")
  wxString(title_bin.data, wxConvUTF8, title_bin.size);
  if(!enif_get_int(env, argv[1], &onPrintPage)) Badarg("onPrintPage");

  ERL_NIF_TERM lstHead, lstTail;
  lstTail = argv[2];
  if(!enif_is_list(env, lstTail)) Badarg("Options");
  const ERL_NIF_TERM *tpl;
  int tpl_sz;

  while(!enif_is_empty_list(env, lstTail)) {
    if(!enif_get_list_cell(env, lstTail, &lstHead, &lstTail)) Badarg("Options");
    if(!enif_get_tuple(env, lstHead, &tpl_sz, &tpl) || tpl_sz != 2) Badarg("Options");
    if(enif_is_identical(tpl[0], enif_make_atom(env, "onPreparePrinting"))) {
      if(!enif_get_int(env, tpl[1], &onPreparePrinting)) Badarg("onPreparePrinting");
    } else if(enif_is_identical(tpl[0], enif_make_atom(env, "onBeginPrinting"))) {
      if(!enif_get_int(env, tpl[1], &onBeginPrinting)) Badarg("onBeginPrinting");
    } else if(enif_is_identical(tpl[0], enif_make_atom(env, "onEndPrinting"))) {
      if(!enif_get_int(env, tpl[1], &onEndPrinting)) Badarg("onEndPrinting");
    } else if(enif_is_identical(tpl[0], enif_make_atom(env, "onBeginDocument"))) {
      if(!enif_get_int(env, tpl[1], &onBeginDocument)) Badarg("onBeginDocument");
    } else if(enif_is_identical(tpl[0], enif_make_atom(env, "onEndDocument"))) {
      if(!enif_get_int(env, tpl[1], &onEndDocument)) Badarg("onEndDocument");
    } else if(enif_is_identical(tpl[0], enif_make_atom(env, "hasPage"))) {
      if(!enif_get_int(env, tpl[1], &hasPage)) Badarg("hasPage");
    } else if(enif_is_identical(tpl[0], enif_make_atom(env, "getPageInfo"))) {
      if(!enif_get_int(env, tpl[1], &getPageInfo)) Badarg("getPageInfo");
    } else        Badarg("Options");
  };
  EwxPrintout * Result = new EwxPrintout(title,
					 onPrintPage,
					 onPreparePrinting,
					 onBeginPrinting,onEndPrinting,
					 onBeginDocument,onEndDocument,
					 hasPage,getPageInfo);
  Result->me_ref = memenv->me_ref;
  app->newPtr((void *) Result, 1, memenv);
  wxeReturn rt = wxeReturn(memenv, Ecmd.caller, true);
  rt.send(  rt.make_ref(app->getRef((void *)Result,memenv), "wxPrintout"));
}

wxPrintout_new>>