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