Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
ec8704b3
Commit
ec8704b3
authored
Oct 23, 2003
by
Sigmund Augdal Helberg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
configure.ac, modules/misc/freetype.c:
* Bidi support in the freetype module through fribidi
parent
8fb55fe0
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
79 additions
and
8 deletions
+79
-8
configure.ac
configure.ac
+15
-1
modules/misc/freetype.c
modules/misc/freetype.c
+64
-7
No files found.
configure.ac
View file @
ec8704b3
dnl Autoconf settings for vlc
dnl $Id: configure.ac,v 1.9
1 2003/10/23 17:04:39 sam
Exp $
dnl $Id: configure.ac,v 1.9
2 2003/10/23 23:00:37 sigmunau
Exp $
AC_INIT(vlc,0.6.3-cvs)
...
...
@@ -2285,6 +2285,15 @@ then
FREETYPE_PATH="${with_freetype_config_path}:${PATH}"
fi ])
AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no, ${FREETYPE_PATH})
FRIBIDI_PATH="${PATH}"
AC_ARG_WITH(fribidi-config-path,
[ --with-fribidi-config-path=PATH fribidi-config path (default search in \$PATH)],
[ if test "${with_fribidi_config_path}" != "no"
then
FRIBIDI_PATH="${with_fribidi_config_path}:${PATH}"
fi ])
AC_PATH_PROG(FRIBIDI_CONFIG, fribidi-config, no, ${FRIBIDI_PATH})
if test "${FREETYPE_CONFIG}" != "no"
then
...
...
@@ -2300,6 +2309,11 @@ then
from http://www.freetype.org/, or configure with --disable-freetype. Have a nice day.
])
fi
if test "${FRIBIDI_CONFIG}" != "no"
then
AX_ADD_CFLAGS([freetype], [`${FRIBIDI_CONFIG} --cflags` -DHAVE_FRIBIDI])
AX_ADD_LDFLAGS([freetype], [`${FRIBIDI_CONFIG} --libs`])
fi
fi
dnl
...
...
modules/misc/freetype.c
View file @
ec8704b3
...
...
@@ -2,7 +2,7 @@
* freetype.c : Put text on the video, using freetype2
*****************************************************************************
* Copyright (C) 2002, 2003 VideoLAN
* $Id: freetype.c,v 1.2
4 2003/10/01 22:44:58 hartman
Exp $
* $Id: freetype.c,v 1.2
5 2003/10/23 23:00:37 sigmunau
Exp $
*
* Authors: Sigmund Augdal <sigmunau@idi.ntnu.no>
*
...
...
@@ -31,7 +31,7 @@
#include <vlc/vout.h>
#include <osd.h>
#include <math.h>
#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_GLYPH_H
...
...
@@ -44,6 +44,13 @@
#define DEFAULT_FONT ""
#endif
#if defined(HAVE_ICONV)
#include <iconv.h>
#endif
#if defined(HAVE_FRIBIDI)
#include <fribidi/fribidi.h>
#endif
typedef
struct
line_desc_t
line_desc_t
;
/*****************************************************************************
...
...
@@ -636,10 +643,13 @@ static int AddText ( vout_thread_t *p_vout, byte_t *psz_string,
int
i_vmargin
,
mtime_t
i_start
,
mtime_t
i_stop
)
{
subpicture_sys_t
*
p_string
;
int
i
,
i_pen_y
,
i_pen_x
,
i_error
,
i_glyph_index
,
i_previous
,
i_char
;
int
i
,
i_pen_y
,
i_pen_x
,
i_error
,
i_glyph_index
,
i_previous
;
subpicture_t
*
p_subpic
;
line_desc_t
*
p_line
,
*
p_next
;
uint32_t
*
p_unicode_string
,
i_char
;
int
i_string_length
;
iconv_t
iconv_handle
;
FT_BBox
line
;
FT_BBox
glyph_size
;
FT_Vector
result
;
...
...
@@ -696,6 +706,52 @@ static int AddText ( vout_thread_t *p_vout, byte_t *psz_string,
p_string
->
p_lines
=
0
;
p_string
->
psz_text
=
strdup
(
psz_string
);
#if defined(HAVE_ICONV)
p_unicode_string
=
malloc
(
(
strlen
(
psz_string
)
+
1
)
*
sizeof
(
uint32_t
)
);
if
(
p_unicode_string
==
NULL
)
{
msg_Err
(
p_vout
,
"Out of memory"
);
goto
error
;
}
iconv_handle
=
iconv_open
(
"UCS-4LE"
,
"UTF-8"
);
if
(
iconv_handle
==
(
iconv_t
)
-
1
)
{
msg_Warn
(
p_vout
,
"Unable to do convertion"
);
goto
error
;
}
{
char
*
p_in_buffer
;
uint32_t
*
p_out_buffer
;
int
i_in_bytes
,
i_out_bytes
,
i_out_bytes_left
,
i_ret
;
i_in_bytes
=
strlen
(
psz_string
);
i_out_bytes
=
i_in_bytes
*
sizeof
(
uint32_t
);
i_out_bytes_left
=
i_out_bytes
;
p_in_buffer
=
psz_string
;
p_out_buffer
=
p_unicode_string
;
i_ret
=
iconv
(
iconv_handle
,
&
p_in_buffer
,
&
i_in_bytes
,
(
char
**
)
&
p_out_buffer
,
&
i_out_bytes_left
);
if
(
i_in_bytes
)
{
msg_Warn
(
p_vout
,
"Failed to convert string to unicode (%s), bytes left %d"
,
strerror
(
errno
),
i_in_bytes
);
goto
error
;
}
*
p_out_buffer
=
0
;
i_string_length
=
(
i_out_bytes
-
i_out_bytes_left
)
/
sizeof
(
uint32_t
);
}
#if defined(HAVE_FRIBIDI)
{
uint32_t
*
p_fribidi_string
;
FriBidiCharType
base_dir
=
FRIBIDI_TYPE_ON
;
p_fribidi_string
=
malloc
(
(
i_string_length
+
1
)
*
sizeof
(
uint32_t
)
);
fribidi_log2vis
(
p_unicode_string
,
i_string_length
,
&
base_dir
,
p_fribidi_string
,
NULL
,
NULL
,
NULL
);
free
(
p_unicode_string
);
p_unicode_string
=
p_fribidi_string
;
p_fribidi_string
[
i_string_length
]
=
0
;
}
#endif
#endif
/* Calculate relative glyph positions and a bounding box for the
* entire string */
p_line
=
NewLine
(
psz_string
);
...
...
@@ -713,10 +769,11 @@ static int AddText ( vout_thread_t *p_vout, byte_t *psz_string,
#define face p_vout->p_text_renderer_data->p_face
#define glyph face->glyph
while
(
*
p
sz
_string
)
while
(
*
p
_unicode
_string
)
{
i_char
=
GetUnicodeCharFromUTF8
(
&
psz_string
);
// i_char = GetUnicodeCharFromUTF8( &psz_string );
i_char
=
*
p_unicode_string
++
;
msg_Dbg
(
p_vout
,
"got char %d, '%c'"
,
i_char
,
(
char
)
i_char
);
if
(
i_char
==
'\r'
)
/* ignore CR chars wherever they may be */
{
continue
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment