Class: Spoolprint::SpoolPrint

Inherits:
Object
  • Object
show all
Defined in:
ext/native/spoolprint.c

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'ext/native/spoolprint.c', line 51

VALUE spoolprintInit(int argc, VALUE* argv, VALUE self) {
	VALUE namaDoc;
	sp_ket ket;
	char* nama = "\0";
	size_t tempuh = 0;
	MUAT_DATA(ket);

	rb_scan_args(argc, argv, "01", &namaDoc);
	if (argc > 0) {
		Check_Type(namaDoc, RUBY_T_STRING);
		nama = RSTRING_PTR(namaDoc);
	}

	while(*nama != 0 && ++tempuh < NAMA_JOB_MAX) {
		*ket->tumpuan++ = *nama++;
	}
	ket->panjangNamaJob = ket->tumpuan - ket->teks;
	*ket->tumpuan++ = 0;
}

Instance Method Details

#cetakObject



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'ext/native/spoolprint.c', line 71

VALUE spoolprintCetak(VALUE self) {
	char *nDoc = ASAL_NAMA_DOC, *dicetak;
	size_t panjang;
	sp_ket ket;
	MUAT_DATA(ket);

	if (ket->panjangNamaJob > 0) {
		nDoc = ket->teks;
		dicetak = ket->teks + ket->panjangNamaJob + 2;
	} else {
		dicetak = ket->teks + 1;
	}
	
	if (*dicetak != 0x1b || *(dicetak + 1) != 0x40) return Qnil;
	panjang = ket->tumpuan - dicetak;
	return INT2FIX(spoolprint_dalam(nDoc, dicetak, panjang));
}

#taruh_raw(raw) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'ext/native/spoolprint.c', line 89

VALUE spoolprintRaw(VALUE self, VALUE raw) {
	char* jukir;
	size_t panjang;
	sp_ket ket;

	MUAT_DATA(ket);
	Check_Type(raw, RUBY_T_STRING);
	jukir = RSTRING_PTR(raw);
	panjang = RSTRING_LEN(raw);

	if (ket->tumpuan - ket->teks + panjang < PANJANG_TEKS) {
		while (panjang--) *ket->tumpuan++ = *jukir++;
		return Qtrue;
	} else {
		return Qfalse;
	}
}