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>>
|