Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
purr-data
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
nerrons
purr-data
Commits
6a612262
Commit
6a612262
authored
10 years ago
by
Mathieu L Bouchard
Browse files
Options
Downloads
Patches
Plain Diff
delete some old debugging code & reformat some things
parent
28b0256f
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
pd/src/g_rtext.c
+33
-124
33 additions, 124 deletions
pd/src/g_rtext.c
with
33 additions
and
124 deletions
pd/src/g_rtext.c
+
33
−
124
View file @
6a612262
...
...
@@ -9,22 +9,19 @@
#include
<stdlib.h>
#include
<string.h>
#include
<stdio.h>
#include
<ctype.h>
#include
"m_pd.h"
#include
"m_imp.h"
#include
"s_stuff.h"
#include
"g_canvas.h"
#include
"s_utf8.h"
#include
"t_tk.h"
#define LMARGIN 2
#define RMARGIN 2
#define TMARGIN 3
/* for some reason, it draws text 1 pixel lower on Mac OS X */
#ifdef __APPLE__
#define TMARGIN 3
#define BMARGIN 1
#else
#define TMARGIN 3
#define BMARGIN 0
#endif
...
...
@@ -46,7 +43,6 @@ struct _rtext
int
x_selend
;
/*-- byte offset --*/
int
x_active
;
int
x_dragfrom
;
int
x_height
;
int
x_drawnwidth
;
int
x_drawnheight
;
t_text
*
x_text
;
...
...
@@ -58,7 +54,6 @@ struct _rtext
t_rtext
*
rtext_new
(
t_glist
*
glist
,
t_text
*
who
)
{
t_rtext
*
x
=
(
t_rtext
*
)
getbytes
(
sizeof
*
x
);
x
->
x_height
=
-
1
;
x
->
x_text
=
who
;
x
->
x_glist
=
glist
;
x
->
x_next
=
glist
->
gl_editor
->
e_rtext
;
...
...
@@ -74,14 +69,15 @@ static t_rtext *rtext_entered;
void
rtext_free
(
t_rtext
*
x
)
{
if
(
x
->
x_glist
->
gl_editor
->
e_textedfor
==
x
)
x
->
x_glist
->
gl_editor
->
e_textedfor
=
0
;
if
(
x
->
x_glist
->
gl_editor
->
e_rtext
==
x
)
x
->
x_glist
->
gl_editor
->
e_rtext
=
x
->
x_next
;
t_editor
*
e
=
x
->
x_glist
->
gl_editor
;
if
(
e
->
e_textedfor
==
x
)
e
->
e_textedfor
=
0
;
if
(
e
->
e_rtext
==
x
)
e
->
e_rtext
=
x
->
x_next
;
else
{
t_rtext
*
e2
;
for
(
e2
=
x
->
x_glist
->
gl_editor
->
e_rtext
;
e2
;
e2
=
e2
->
x_next
)
for
(
e2
=
e
->
e_rtext
;
e2
;
e2
=
e2
->
x_next
)
if
(
e2
->
x_next
==
x
)
{
e2
->
x_next
=
x
->
x_next
;
...
...
@@ -206,8 +202,6 @@ static void rtext_senditup(t_rtext *x, int action, int *widthp, int *heightp,
int
widthspec_c
=
x
->
x_text
->
te_width
;
// width if any specified
// width limit in chars
int
widthlimit_c
=
(
widthspec_c
?
widthspec_c
:
BOXWIDTH
);
//fprintf(stderr,"senditup widthlimit_c %d %d\n",
// widthspec_c, widthlimit_c);
int
inindex_b
=
0
;
// index location in the buffer
int
inindex_c
=
0
;
// index location in the u8 chars
int
selstart_b
=
0
,
selend_b
=
0
;
// selection start and end
...
...
@@ -240,7 +234,6 @@ static void rtext_senditup(t_rtext *x, int action, int *widthp, int *heightp,
int
foundit_c
;
//following deals with \v replacement for \n in multiline comments
int
foundit_bv
=
firstone
(
x
->
x_buf
+
inindex_b
,
'\v'
,
maxindex_b
);
//fprintf(stderr,"%d %d <%s>\n", foundit_b, foundit_bv, x->x_buf);
if
((
foundit_bv
<
foundit_b
&&
foundit_bv
!=
-
1
)
||
(
foundit_b
==
-
1
&&
foundit_bv
!=
-
1
))
foundit_b
=
foundit_bv
;
...
...
@@ -280,7 +273,6 @@ static void rtext_senditup(t_rtext *x, int action, int *widthp, int *heightp,
*
indexp
=
inindex_b
+
u8_offset
(
x
->
x_buf
+
inindex_b
,
actualx
);
reportedindex
=
1
;
}
//fprintf(stderr,"eatchar %d <%s>\n", eatchar, tempbuf);
strncpy
(
tempbuf
+
outchars_b
,
x
->
x_buf
+
inindex_b
,
foundit_b
);
if
(
x
->
x_selstart
>=
inindex_b
&&
x
->
x_selstart
<=
inindex_b
+
foundit_b
+
eatchar
)
...
...
@@ -322,10 +314,10 @@ static void rtext_senditup(t_rtext *x, int action, int *widthp, int *heightp,
if
(
action
&&
x
->
x_text
->
te_width
&&
x
->
x_text
->
te_type
!=
T_ATOM
)
{
/* if our width is specified but the "natural" width is the
same as the specified width, set specified width to zero
so future text editing will automatically change width.
Except atoms whose content changes at runtime. */
/* if our width is specified but the "natural" width is the
same as the specified width, set specified width to zero
so future text editing will automatically change width.
Except atoms whose content changes at runtime. */
int
widthwas
=
x
->
x_text
->
te_width
,
newwidth
=
0
,
newheight
=
0
,
newindex
=
0
;
x
->
x_text
->
te_width
=
0
;
...
...
@@ -333,12 +325,9 @@ static void rtext_senditup(t_rtext *x, int action, int *widthp, int *heightp,
if
(
newwidth
/
fontwidth
!=
widthwas
)
x
->
x_text
->
te_width
=
widthwas
;
else
x
->
x_text
->
te_width
=
0
;
//fprintf(stderr,"senditup width %d %d %d\n",
// newwidth/fontwidth, widthwas, x->x_text->te_width);
}
if
(
action
==
SEND_FIRST
)
{
//fprintf(stderr,"canvas=.x%lx %s\n", (t_int)canvas, tempbuf);
sys_vgui
(
"pdtk_text_new .x%lx.c {%s %s text} %f %f {%.*s} %d %s
\n
"
,
canvas
,
x
->
x_tag
,
rtext_gettype
(
x
)
->
s_name
,
dispx
+
LMARGIN
,
dispy
+
TMARGIN
,
...
...
@@ -349,23 +338,9 @@ static void rtext_senditup(t_rtext *x, int action, int *widthp, int *heightp,
}
else
if
(
action
==
SEND_UPDATE
)
{
/*fprintf(stderr,
"SEND_UPDATE canvas_class=%d isgraph=%d goprect=%d\n",
(pd_class(&x->x_text->te_pd) == canvas_class ? 1 : 0),
((t_glist *)(x->x_text))->gl_isgraph,
((t_glist *)(x->x_text))->gl_goprect );*/
sys_vgui
(
"pdtk_text_set .x%lx.c %s {%.*s}
\n
"
,
canvas
,
x
->
x_tag
,
outchars_b
,
tempbuf
);
/*if ( pd_class(&x->x_text->te_pd) == canvas_class &&
((t_glist *)(x->x_text))->gl_isgraph &&
(((t_glist *)(x->x_text))->gl_goprect) )
{
fprintf(stderr, "do not update outlets\n");
}
else */
if
(
pixwide
!=
x
->
x_drawnwidth
||
pixhigh
!=
x
->
x_drawnheight
)
text_drawborder
(
x
->
x_text
,
x
->
x_glist
,
x
->
x_tag
,
pixwide
,
pixhigh
,
0
);
...
...
@@ -405,8 +380,8 @@ void rtext_retext(t_rtext *x)
t_text
*
text
=
x
->
x_text
;
t_freebytes
(
x
->
x_buf
,
x
->
x_bufsize
);
binbuf_gettext
(
text
->
te_binbuf
,
&
x
->
x_buf
,
&
x
->
x_bufsize
);
/* special case: for number boxes, try to pare the number down
to the specified width of the box. */
/* special case: for number boxes, try to pare the number down
to the specified width of the box. */
if
(
text
->
te_width
>
0
&&
text
->
te_type
==
T_ATOM
&&
x
->
x_bufsize
>
text
->
te_width
)
{
...
...
@@ -415,7 +390,7 @@ void rtext_retext(t_rtext *x)
int
bufsize
=
x
->
x_bufsize
;
if
(
natom
==
1
&&
atomp
->
a_type
==
A_FLOAT
)
{
/* try to reduce size by dropping decimal digits */
/* try to reduce size by dropping decimal digits */
int
wantreduce
=
bufsize
-
text
->
te_width
;
char
*
decimal
=
0
,
*
nextchar
,
*
ebuf
=
x
->
x_buf
+
bufsize
,
*
s1
,
*
s2
;
...
...
@@ -436,7 +411,7 @@ void rtext_retext(t_rtext *x)
bufsize
=
text
->
te_width
;
goto
done
;
giveup:
/* give up and bash it to "+" or "-" */
/* give up and bash it to "+" or "-" */
x
->
x_buf
[
0
]
=
(
atomp
->
a_w
.
w_float
<
0
?
'-'
:
'+'
);
x
->
x_buf
=
t_resizebytes
(
x
->
x_buf
,
bufsize
,
1
);
bufsize
=
1
;
...
...
@@ -531,10 +506,12 @@ void rtext_select(t_rtext *x, int state)
void
rtext_activate
(
t_rtext
*
x
,
int
state
)
{
//fprintf(stderr, "rtext_activate\n");
int
w
=
0
,
h
=
0
,
indx
;
t_glist
*
glist
=
x
->
x_glist
;
t_canvas
*
canvas
=
glist_getcanvas
(
glist
);
if
(
state
&&
x
->
x_active
)
{
printf
(
"duplicate rtext_activate
\n
"
);
}
if
(
state
)
{
sys_vgui
(
".x%lx.c focus %s
\n
"
,
canvas
,
x
->
x_tag
);
...
...
@@ -568,19 +545,12 @@ static int rtext_compare_special_chars(const char c)
void
rtext_key
(
t_rtext
*
x
,
int
keynum
,
t_symbol
*
keysym
)
{
int
w
=
0
,
h
=
0
,
indx
,
i
,
newsize
,
ndel
;
//fprintf(stderr,"rtext_key keysym=%s\n", keysym->s_name);
if
(
keynum
)
{
int
n
=
keynum
;
if
(
n
==
'\r'
)
n
=
'\n'
;
if
(
n
==
'\b'
)
/* backspace */
if
(
n
==
'\b'
)
/* backspace */
{
/* LATER delete the box if all text is selected...
this causes reentrancy problems now. */
/* if ((!x->x_selstart) && (x->x_selend == x->x_bufsize))
{
....
} */
if
(
x
->
x_selstart
&&
(
x
->
x_selstart
==
x
->
x_selend
))
{
u8_dec
(
x
->
x_buf
,
&
x
->
x_selstart
);
...
...
@@ -590,7 +560,7 @@ void rtext_key(t_rtext *x, int keynum, t_symbol *keysym)
}
}
else
if
(
n
==
127
)
/* delete */
else
if
(
n
==
127
)
/* delete */
{
if
(
x
->
x_selend
<
x
->
x_bufsize
&&
(
x
->
x_selstart
==
x
->
x_selend
))
u8_inc
(
x
->
x_buf
,
&
x
->
x_selend
);
...
...
@@ -617,7 +587,6 @@ be printable in whatever 8-bit character set we find ourselves. */
*/
if
(
n
==
'\n'
||
(
n
>
31
&&
n
<
127
))
{
//fprintf(stderr,"return or 31-127\n");
newsize
=
x
->
x_bufsize
+
1
;
x
->
x_buf
=
resizebytes
(
x
->
x_buf
,
x
->
x_bufsize
,
newsize
);
for
(
i
=
x
->
x_bufsize
;
i
>
x
->
x_selstart
;
i
--
)
...
...
@@ -632,7 +601,6 @@ be printable in whatever 8-bit character set we find ourselves. */
/*--moo: check for unicode codepoints beyond 7-bit ASCII --*/
else
if
(
n
>
127
)
{
//fprintf(stderr,">127\n");
int
ch_nbytes
=
u8_wc_nbytes
(
n
);
newsize
=
x
->
x_bufsize
+
ch_nbytes
;
x
->
x_buf
=
resizebytes
(
x
->
x_buf
,
x
->
x_bufsize
,
newsize
);
...
...
@@ -739,12 +707,10 @@ be printable in whatever 8-bit character set we find ourselves. */
}
else
if
(
!
strcmp
(
keysym
->
s_name
,
"CtrlLeft"
))
{
//fprintf(stderr,"ctrleft\n");
/* first find first non-space char going back */
while
(
x
->
x_selstart
>
0
&&
rtext_compare_special_chars
(
x
->
x_buf
[
x
->
x_selstart
-
1
]))
{
//fprintf(stderr,"while 1 <%c>\n", x->x_buf[x->x_selstart-1]);
u8_dec
(
x
->
x_buf
,
&
x
->
x_selstart
);
}
/* now go back until you find another space or
...
...
@@ -752,13 +718,11 @@ be printable in whatever 8-bit character set we find ourselves. */
while
(
x
->
x_selstart
>
0
&&
!
rtext_compare_special_chars
(
x
->
x_buf
[
x
->
x_selstart
-
1
]))
{
//fprintf(stderr,"while 2 <%c>\n", x->x_buf[x->x_selstart-1]);
u8_dec
(
x
->
x_buf
,
&
x
->
x_selstart
);
}
if
(
x
->
x_buf
[
x
->
x_selstart
+
1
]
==
' '
&&
x
->
x_buf
[
x
->
x_selstart
]
==
' '
)
{
//fprintf(stderr,"go forward\n");
u8_inc
(
x
->
x_buf
,
&
x
->
x_selstart
);
}
x
->
x_selend
=
x
->
x_selstart
;
...
...
@@ -772,18 +736,10 @@ be printable in whatever 8-bit character set we find ourselves. */
while
(
x
->
x_selend
<
x
->
x_bufsize
&&
!
rtext_compare_special_chars
(
x
->
x_buf
[
x
->
x_selend
]))
u8_inc
(
x
->
x_buf
,
&
x
->
x_selend
);
/* now skip all the spaces and land before next word */
/*while (x->x_selend < x->x_bufsize &&
x->x_buf[x->x_selend] == ' ')
u8_inc(x->x_buf, &x->x_selend);
if (x->x_selend > 0 && x->x_buf[x->x_selend-1] == ' ')
u8_dec(x->x_buf, &x->x_selend);*/
x
->
x_selstart
=
x
->
x_selend
;
}
else
if
(
!
strcmp
(
keysym
->
s_name
,
"CtrlShiftLeft"
))
{
//fprintf(stderr,"ctrlshiftleft %d %d %d\n",
// last_sel, x->x_selstart, x->x_selend);
int
swap
=
0
;
int
*
target
;
if
(
!
last_sel
)
last_sel
=
1
;
...
...
@@ -799,25 +755,19 @@ be printable in whatever 8-bit character set we find ourselves. */
rtext_compare_special_chars
(
x
->
x_buf
[
*
target
-
1
]))
{
u8_dec
(
x
->
x_buf
,
target
);
//(*target)--;
}
//fprintf(stderr,"%d %d\n", x->x_selstart, x->x_selend);
/* now go back until you find another space or
the beginning of the buffer */
while
(
*
target
>
0
&&
!
rtext_compare_special_chars
(
x
->
x_buf
[
*
target
-
1
]))
{
u8_dec
(
x
->
x_buf
,
target
);
//(*target)--;
}
//fprintf(stderr,"%d %d\n", x->x_selstart, x->x_selend);
if
(
x
->
x_buf
[
*
target
+
1
]
==
' '
&&
x
->
x_buf
[
x
->
x_selstart
]
==
' '
)
{
u8_inc
(
x
->
x_buf
,
target
);
//(*target)++;
}
//fprintf(stderr,"%d %d\n", x->x_selstart, x->x_selend);
if
(
x
->
x_selstart
>
x
->
x_selend
)
{
swap
=
x
->
x_selend
;
...
...
@@ -828,8 +778,6 @@ be printable in whatever 8-bit character set we find ourselves. */
}
else
if
(
!
strcmp
(
keysym
->
s_name
,
"CtrlShiftRight"
))
{
//fprintf(stderr,"ctrlshiftright %d %d %d\n",
// last_sel, x->x_selstart, x->x_selend);
int
swap
=
0
;
int
*
target
;
if
(
!
last_sel
)
last_sel
=
2
;
...
...
@@ -840,38 +788,17 @@ be printable in whatever 8-bit character set we find ourselves. */
last_sel
=
2
;
target
=
&
x
->
x_selend
;
}
//fprintf(stderr,"%d %d\n", x->x_selstart, x->x_selend);
/* now go forward until you find another space or
the end of the buffer */
if
(
*
target
<
x
->
x_bufsize
-
1
)
{
//fprintf(stderr,"while 1 <%c>\n", x->x_buf[*target]);
u8_inc
(
x
->
x_buf
,
target
);
//(*target)++;
}
//fprintf(stderr,"%d %d\n", x->x_selstart, x->x_selend);
while
(
*
target
<
x
->
x_bufsize
&&
!
rtext_compare_special_chars
(
x
->
x_buf
[
*
target
]))
{
//fprintf(stderr,"while 2 <%c>\n", x->x_buf[*target]);
u8_inc
(
x
->
x_buf
,
target
);
//(*target)++;
}
/* now skip all the spaces and land before next word */
/*while (*target < x->x_bufsize &&
x->x_buf[*target] == ' ')
{
u8_inc
(
x
->
x_buf
,
target
);
//(*target)++;
}
if (*target > 0 && x->x_buf[*target-1] == ' ')
{
u8_dec(x->x_buf, target);
//(*target)--;
}*/
//fprintf(stderr,"%d %d\n", x->x_selstart, x->x_selend);
if
(
x
->
x_selstart
>
x
->
x_selend
)
{
swap
=
x
->
x_selend
;
...
...
@@ -879,9 +806,7 @@ be printable in whatever 8-bit character set we find ourselves. */
x
->
x_selstart
=
swap
;
last_sel
=
2
;
}
//fprintf(stderr,"%d %d\n", x->x_selstart, x->x_selend);
}
rtext_senditup
(
x
,
SEND_UPDATE
,
&
w
,
&
h
,
&
indx
);
}
...
...
@@ -895,37 +820,21 @@ void rtext_mouse(t_rtext *x, int xval, int yval, int flag)
}
else
if
(
flag
==
RTEXT_DBL
)
{
int
w
hereseparator
,
newseparator
;
int
w
s
,
ns
;
x
->
x_dragfrom
=
-
1
;
whereseparator
=
0
;
if
((
newseparator
=
lastone
(
x
->
x_buf
,
' '
,
indx
))
>
whereseparator
)
whereseparator
=
newseparator
+
1
;
if
((
newseparator
=
lastone
(
x
->
x_buf
,
'\n'
,
indx
))
>
whereseparator
)
whereseparator
=
newseparator
+
1
;
if
((
newseparator
=
lastone
(
x
->
x_buf
,
';'
,
indx
))
>
whereseparator
)
whereseparator
=
newseparator
+
1
;
if
((
newseparator
=
lastone
(
x
->
x_buf
,
','
,
indx
))
>
whereseparator
)
whereseparator
=
newseparator
+
1
;
x
->
x_selstart
=
whereseparator
;
ws
=
0
;
if
((
ns
=
lastone
(
x
->
x_buf
,
' '
,
indx
))
>
ws
)
ws
=
ns
+
1
;
if
((
ns
=
lastone
(
x
->
x_buf
,
'\n'
,
indx
))
>
ws
)
ws
=
ns
+
1
;
if
((
ns
=
lastone
(
x
->
x_buf
,
';'
,
indx
))
>
ws
)
ws
=
ns
+
1
;
if
((
ns
=
lastone
(
x
->
x_buf
,
','
,
indx
))
>
ws
)
ws
=
ns
+
1
;
x
->
x_selstart
=
ws
;
whereseparator
=
x
->
x_bufsize
-
indx
;
if
((
newseparator
=
firstone
(
x
->
x_buf
+
indx
,
' '
,
x
->
x_bufsize
-
indx
))
>=
0
&&
newseparator
<
whereseparator
)
whereseparator
=
newseparator
;
if
((
newseparator
=
firstone
(
x
->
x_buf
+
indx
,
'\n'
,
x
->
x_bufsize
-
indx
))
>=
0
&&
newseparator
<
whereseparator
)
whereseparator
=
newseparator
;
if
((
newseparator
=
firstone
(
x
->
x_buf
+
indx
,
';'
,
x
->
x_bufsize
-
indx
))
>=
0
&&
newseparator
<
whereseparator
)
whereseparator
=
newseparator
;
if
((
newseparator
=
firstone
(
x
->
x_buf
+
indx
,
','
,
x
->
x_bufsize
-
indx
))
>=
0
&&
newseparator
<
whereseparator
)
whereseparator
=
newseparator
;
x
->
x_selend
=
indx
+
whereseparator
;
int
i
=
ws
=
x
->
x_bufsize
-
indx
;
if
((
ns
=
firstone
(
x
->
x_buf
+
indx
,
' '
,
i
))
>=
0
&&
ns
<
ws
)
ws
=
ns
;
if
((
ns
=
firstone
(
x
->
x_buf
+
indx
,
'\n'
,
i
))
>=
0
&&
ns
<
ws
)
ws
=
ns
;
if
((
ns
=
firstone
(
x
->
x_buf
+
indx
,
';'
,
i
))
>=
0
&&
ns
<
ws
)
ws
=
ns
;
if
((
ns
=
firstone
(
x
->
x_buf
+
indx
,
','
,
i
))
>=
0
&&
ns
<
ws
)
ws
=
ns
;
x
->
x_selend
=
indx
+
ws
;
}
else
if
(
flag
==
RTEXT_SHIFT
)
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment