ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/rxvtperl.xs
(Generate patch)

Comparing rxvt-unicode/src/rxvtperl.xs (file contents):
Revision 1.126 by root, Wed Nov 5 14:43:54 2008 UTC vs.
Revision 1.133 by root, Tue Dec 7 17:51:27 2010 UTC

639# define def(sym) av_store (hookname, HOOK_ ## sym, newSVpv (# sym, 0)); 639# define def(sym) av_store (hookname, HOOK_ ## sym, newSVpv (# sym, 0));
640# include "hookinc.h" 640# include "hookinc.h"
641# undef def 641# undef def
642 642
643 HV *option = get_hv ("urxvt::OPTION", 1); 643 HV *option = get_hv ("urxvt::OPTION", 1);
644# define def(name,val) hv_store (option, # name, sizeof (# name) - 1, newSVuv (Opt_ ## name), 0); 644# define def(name) hv_store (option, # name, sizeof (# name) - 1, newSVuv (Opt_ ## name), 0);
645# define nodef(name) 645# define nodef(name)
646# include "optinc.h" 646# include "optinc.h"
647# undef nodef 647# undef nodef
648# undef def 648# undef def
649 649
654 } *civ, const_iv[] = { 654 } *civ, const_iv[] = {
655# define const_iv(name) { # name, (IV)name } 655# define const_iv(name) { # name, (IV)name }
656 const_iv (NUM_RESOURCES), 656 const_iv (NUM_RESOURCES),
657 const_iv (DEFAULT_RSTYLE), 657 const_iv (DEFAULT_RSTYLE),
658 const_iv (OVERLAY_RSTYLE), 658 const_iv (OVERLAY_RSTYLE),
659 const_iv (Color_Bits),
660 const_iv (RS_bgShift), const_iv (RS_bgMask),
661 const_iv (RS_fgShift), const_iv (RS_fgMask),
662 const_iv (RS_Careful),
663 const_iv (RS_fontCount),
664 const_iv (RS_fontShift),
665 const_iv (RS_fontMask),
666 const_iv (RS_baseattrMask),
667 const_iv (RS_attrMask),
668 const_iv (RS_redraw),
669 const_iv (RS_Sel),
659 const_iv (RS_Bold), 670 const_iv (RS_Bold),
660 const_iv (RS_Italic), 671 const_iv (RS_Italic),
661 const_iv (RS_Blink), 672 const_iv (RS_Blink),
662 const_iv (RS_RVid), 673 const_iv (RS_RVid),
663 const_iv (RS_Uline), 674 const_iv (RS_Uline),
1055 OUTPUT: 1066 OUTPUT:
1056 RETVAL 1067 RETVAL
1057 1068
1058#define TERM_OFFSET(sym) offsetof (TermWin_t, sym) 1069#define TERM_OFFSET(sym) offsetof (TermWin_t, sym)
1059 1070
1060#define TERM_OFFSET_width TERM_OFFSET(width) 1071#define TERM_OFFSET_width TERM_OFFSET(width)
1061#define TERM_OFFSET_height TERM_OFFSET(height) 1072#define TERM_OFFSET_height TERM_OFFSET(height)
1062#define TERM_OFFSET_fwidth TERM_OFFSET(fwidth) 1073#define TERM_OFFSET_fwidth TERM_OFFSET(fwidth)
1063#define TERM_OFFSET_fheight TERM_OFFSET(fheight) 1074#define TERM_OFFSET_fheight TERM_OFFSET(fheight)
1064#define TERM_OFFSET_fbase TERM_OFFSET(fbase) 1075#define TERM_OFFSET_fbase TERM_OFFSET(fbase)
1065#define TERM_OFFSET_nrow TERM_OFFSET(nrow) 1076#define TERM_OFFSET_nrow TERM_OFFSET(nrow)
1066#define TERM_OFFSET_ncol TERM_OFFSET(ncol) 1077#define TERM_OFFSET_ncol TERM_OFFSET(ncol)
1067#define TERM_OFFSET_focus TERM_OFFSET(focus) 1078#define TERM_OFFSET_focus TERM_OFFSET(focus)
1068#define TERM_OFFSET_mapped TERM_OFFSET(mapped) 1079#define TERM_OFFSET_mapped TERM_OFFSET(mapped)
1069#define TERM_OFFSET_int_bwidth TERM_OFFSET(int_bwidth) 1080#define TERM_OFFSET_int_bwidth TERM_OFFSET(int_bwidth)
1070#define TERM_OFFSET_ext_bwidth TERM_OFFSET(ext_bwidth) 1081#define TERM_OFFSET_ext_bwidth TERM_OFFSET(ext_bwidth)
1071#define TERM_OFFSET_lineSpace TERM_OFFSET(lineSpace) 1082#define TERM_OFFSET_lineSpace TERM_OFFSET(lineSpace)
1083#define TERM_OFFSET_letterSpace TERM_OFFSET(letterSpace)
1072#define TERM_OFFSET_saveLines TERM_OFFSET(saveLines) 1084#define TERM_OFFSET_saveLines TERM_OFFSET(saveLines)
1073#define TERM_OFFSET_total_rows TERM_OFFSET(total_rows) 1085#define TERM_OFFSET_total_rows TERM_OFFSET(total_rows)
1074#define TERM_OFFSET_top_row TERM_OFFSET(top_row) 1086#define TERM_OFFSET_top_row TERM_OFFSET(top_row)
1075 1087
1076int 1088int
1077rxvt_term::width () 1089rxvt_term::width ()
1078 ALIAS: 1090 ALIAS:
1079 width = TERM_OFFSET_width 1091 width = TERM_OFFSET_width
1080 height = TERM_OFFSET_height 1092 height = TERM_OFFSET_height
1081 fwidth = TERM_OFFSET_fwidth 1093 fwidth = TERM_OFFSET_fwidth
1082 fheight = TERM_OFFSET_fheight 1094 fheight = TERM_OFFSET_fheight
1083 fbase = TERM_OFFSET_fbase 1095 fbase = TERM_OFFSET_fbase
1084 nrow = TERM_OFFSET_nrow 1096 nrow = TERM_OFFSET_nrow
1085 ncol = TERM_OFFSET_ncol 1097 ncol = TERM_OFFSET_ncol
1086 focus = TERM_OFFSET_focus 1098 focus = TERM_OFFSET_focus
1087 mapped = TERM_OFFSET_mapped 1099 mapped = TERM_OFFSET_mapped
1088 int_bwidth = TERM_OFFSET_int_bwidth 1100 int_bwidth = TERM_OFFSET_int_bwidth
1089 ext_bwidth = TERM_OFFSET_ext_bwidth 1101 ext_bwidth = TERM_OFFSET_ext_bwidth
1090 lineSpace = TERM_OFFSET_lineSpace 1102 lineSpace = TERM_OFFSET_lineSpace
1103 letterSpace = TERM_OFFSET_letterSpace
1091 saveLines = TERM_OFFSET_saveLines 1104 saveLines = TERM_OFFSET_saveLines
1092 total_rows = TERM_OFFSET_total_rows 1105 total_rows = TERM_OFFSET_total_rows
1093 top_row = TERM_OFFSET_top_row 1106 top_row = TERM_OFFSET_top_row
1094 CODE: 1107 CODE:
1095 RETVAL = *(int *)((char *)THIS + ix); 1108 RETVAL = *(int *)((char *)THIS + ix);
1096 OUTPUT: 1109 OUTPUT:
1097 RETVAL 1110 RETVAL
1098 1111
1548 EXTEND (SP, 2); 1561 EXTEND (SP, 2);
1549 PUSHs (sv_2mortal (newSViv (rc.row))); 1562 PUSHs (sv_2mortal (newSViv (rc.row)));
1550 PUSHs (sv_2mortal (newSViv (rc.col))); 1563 PUSHs (sv_2mortal (newSViv (rc.col)));
1551 } 1564 }
1552 1565
1553 if (items == 3) 1566 if (items >= 3)
1554 { 1567 {
1555 rc.row = SvIV (ST (1)); 1568 rc.row = SvIV (ST (1));
1556 rc.col = SvIV (ST (2)); 1569 rc.col = SvIV (ST (2));
1557 1570
1558 if (ix == 2) 1571 if (ix == 2)
1574 clamp_it (rc.col, 0, THIS->ncol); 1587 clamp_it (rc.col, 0, THIS->ncol);
1575 clamp_it (rc.row, THIS->top_row, THIS->nrow - 1); 1588 clamp_it (rc.row, THIS->top_row, THIS->nrow - 1);
1576 1589
1577 if (ix) 1590 if (ix)
1578 { 1591 {
1592 THIS->selection.screen = THIS->current_screen;
1593
1579 THIS->want_refresh = 1; 1594 THIS->want_refresh = 1;
1580 THIS->refresh_check (); 1595 THIS->refresh_check ();
1581 } 1596 }
1582 } 1597 }
1583} 1598}
1584 1599
1585char 1600int
1586rxvt_term::cur_charset () 1601rxvt_term::selection_screen (int screen = -1)
1587 CODE: 1602 CODE:
1588 RETVAL = THIS->charsets [THIS->screen.charset]; 1603 RETVAL = THIS->selection.screen;
1589 OUTPUT: 1604 if (screen >= 0)
1605 THIS->selection.screen = screen;
1606 OUTPUT:
1590 RETVAL 1607 RETVAL
1591 1608
1592void 1609void
1593rxvt_term::selection_clear () 1610rxvt_term::selection_clear (bool clipboard = false)
1594 1611
1595void 1612void
1596rxvt_term::selection_make (Time eventtime, bool rect = false) 1613rxvt_term::selection_make (Time eventtime, bool rect = false)
1597 CODE: 1614 CODE:
1598 THIS->selection.op = SELECTION_CONT; 1615 THIS->selection.op = SELECTION_CONT;
1599 THIS->selection.rect = rect; 1616 THIS->selection.rect = rect;
1600 THIS->selection_make (eventtime); 1617 THIS->selection_make (eventtime);
1601 1618
1602int 1619int
1603rxvt_term::selection_grab (Time eventtime) 1620rxvt_term::selection_grab (Time eventtime, bool clipboard = false)
1604 1621
1605void 1622void
1606rxvt_term::selection (SV *newtext = 0) 1623rxvt_term::selection (SV *newtext = 0, bool clipboard = false)
1607 PPCODE: 1624 PPCODE:
1608{ 1625{
1626 wchar_t * &text = clipboard ? THIS->selection.clip_text : THIS->selection.text;
1627 unsigned int &len = clipboard ? THIS->selection.clip_len : THIS->selection.len;
1628
1609 if (GIMME_V != G_VOID) 1629 if (GIMME_V != G_VOID)
1610 XPUSHs (THIS->selection.text 1630 XPUSHs (text
1611 ? sv_2mortal (wcs2sv (THIS->selection.text, THIS->selection.len)) 1631 ? sv_2mortal (wcs2sv (text, len))
1612 : &PL_sv_undef); 1632 : &PL_sv_undef);
1613 1633
1614 if (newtext) 1634 if (newtext)
1615 { 1635 {
1616 free (THIS->selection.text); 1636 free (text);
1617 1637
1618 THIS->selection.text = sv2wcs (newtext); 1638 text = sv2wcs (newtext);
1619 THIS->selection.len = wcslen (THIS->selection.text); 1639 len = wcslen (text);
1620 } 1640 }
1621} 1641}
1642
1643char
1644rxvt_term::cur_charset ()
1645 CODE:
1646 RETVAL = THIS->charsets [THIS->screen.charset];
1647 OUTPUT:
1648 RETVAL
1622 1649
1623void 1650void
1624rxvt_term::scr_xor_rect (int beg_row, int beg_col, int end_row, int end_col, U32 rstyle1 = RS_RVid, U32 rstyle2 = RS_RVid | RS_Uline) 1651rxvt_term::scr_xor_rect (int beg_row, int beg_col, int end_row, int end_col, U32 rstyle1 = RS_RVid, U32 rstyle2 = RS_RVid | RS_Uline)
1625 1652
1626void 1653void
1648 char *str = SvPVbyte (octets, len); 1675 char *str = SvPVbyte (octets, len);
1649 C_ARGS: 1676 C_ARGS:
1650 str, len 1677 str, len
1651 1678
1652void 1679void
1680rxvt_term::tt_paste (SV *octets)
1681 INIT:
1682 STRLEN len;
1683 char *str = SvPVbyte (octets, len);
1684 C_ARGS:
1685 str, len
1686
1687void
1653rxvt_term::cmd_parse (SV *octets) 1688rxvt_term::cmd_parse (SV *octets)
1654 CODE: 1689 CODE:
1655{ 1690{
1656 STRLEN len; 1691 STRLEN len;
1657 char *str = SvPVbyte (octets, len); 1692 char *str = SvPVbyte (octets, len);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines