summaryrefslogtreecommitdiffstats
path: root/libmscgen
diff options
context:
space:
mode:
Diffstat (limited to 'libmscgen')
-rw-r--r--libmscgen/CMakeLists.txt8
-rw-r--r--libmscgen/gd.c4
-rw-r--r--libmscgen/mscgen_api.c18
-rw-r--r--libmscgen/mscgen_gd_out.c2
-rw-r--r--libmscgen/mscgen_language.y3
-rw-r--r--libmscgen/mscgen_lexer.h1
-rw-r--r--libmscgen/mscgen_lexer.l7
7 files changed, 27 insertions, 16 deletions
diff --git a/libmscgen/CMakeLists.txt b/libmscgen/CMakeLists.txt
index 079fcfc..0a23900 100644
--- a/libmscgen/CMakeLists.txt
+++ b/libmscgen/CMakeLists.txt
@@ -1,14 +1,14 @@
include_directories(
- ${CMAKE_SOURCE_DIR}/liblodepng
- ${CMAKE_SOURCE_DIR}/libmscgen
+ ${PROJECT_SOURCE_DIR}/liblodepng
+ ${PROJECT_SOURCE_DIR}/libmscgen
${GENERATED_SRC}
)
set(LEX_FILES mscgen_lexer)
foreach(lex_file ${LEX_FILES})
add_custom_command(
- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/libmscgen/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h
- DEPENDS ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/libmscgen/${lex_file}.l
+ COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/scan_states.py ${PROJECT_SOURCE_DIR}/libmscgen/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h
+ DEPENDS ${PROJECT_SOURCE_DIR}/src/scan_states.py ${PROJECT_SOURCE_DIR}/libmscgen/${lex_file}.l
OUTPUT ${GENERATED_SRC}/${lex_file}.l.h
)
set_source_files_properties(${GENERATED_SRC}/${lex_file}.l.h PROPERTIES GENERATED 1)
diff --git a/libmscgen/gd.c b/libmscgen/gd.c
index 7e8b241..a9a8aa6 100644
--- a/libmscgen/gd.c
+++ b/libmscgen/gd.c
@@ -1967,7 +1967,7 @@ BGD_DECLARE(void) gdImageString (gdImagePtr im, gdFontPtr f,
{
int i;
int l;
- l = strlen ((char *) s);
+ l = (int)strlen((char *) s);
for (i = 0; (i < l); i++) {
gdImageChar (im, f, x, y, s[i], color);
x += f->w;
@@ -1982,7 +1982,7 @@ BGD_DECLARE(void) gdImageStringUp (gdImagePtr im, gdFontPtr f,
{
int i;
int l;
- l = strlen ((char *) s);
+ l = (int)strlen((char *) s);
for (i = 0; (i < l); i++) {
gdImageCharUp (im, f, x, y, s[i], color);
y -= f->w;
diff --git a/libmscgen/mscgen_api.c b/libmscgen/mscgen_api.c
index b28d653..e2cdcb9 100644
--- a/libmscgen/mscgen_api.c
+++ b/libmscgen/mscgen_api.c
@@ -300,7 +300,7 @@ static char *splitStringToWidth(Context *ctx, char *l, unsigned int width)
/* Copy the remaining line to the start of the string */
m = 0;
- n = (p - l);
+ n = (int)(p - l);
while (isspace(orig[n]) && orig[n] != '\0')
{
@@ -390,7 +390,7 @@ static unsigned int computeLabelLines(Context *ctx,
char *nextLine = strstr(label, "\\n");
if (nextLine)
{
- const int lineLen = nextLine - label;
+ const int lineLen = (int)(nextLine - label);
/* Allocate storage and duplicate the line */
retLines[c] = malloc_s(lineLen + 1);
@@ -457,6 +457,7 @@ static RowInfo *computeCanvasSize(Context *ctx,
nextYmin = ymin = ctx->opts.entityHeadGap;
yskipmax = 0;
+ ymax = 0;
MscResetArcIterator(m);
do
{
@@ -633,11 +634,11 @@ static char *getLine(const char *string,
/* Determine the length of the line */
if(lineEnd != NULL)
{
- lineLen = lineEnd - lineStart;
+ lineLen = (unsigned int)(lineEnd - lineStart);
}
else
{
- lineLen = strlen(string) - (lineStart - string);
+ lineLen = (unsigned int)(strlen(string) - (lineStart - string));
}
/* Clamp the length to the buffer */
@@ -1328,8 +1329,8 @@ static void arcLine(Context *ctx,
hasArrows = FALSE;
/* Get co-ordinates of the arc end-point */
- ADrawComputeArcPoint(sx, y - 1, ctx->opts.entitySpacing - 8,
- ctx->opts.loopArcHeight, 180.0f - 45.0f,
+ ADrawComputeArcPoint((float)sx, (float)(y - 1), (float)(ctx->opts.entitySpacing - 8),
+ (float)ctx->opts.loopArcHeight, 180.0f - 45.0f,
&px, &py);
/* Draw a cross */
@@ -1392,8 +1393,9 @@ static void arcLine(Context *ctx,
hasArrows = FALSE;
/* Get co-ordinates of the arc end-point */
- ADrawComputeArcPoint(sx, y - 1, ctx->opts.entitySpacing - 8,
- ctx->opts.loopArcHeight, 45.0f,
+ ADrawComputeArcPoint((float)sx, (float)(y - 1),
+ (float)(ctx->opts.entitySpacing - 8),
+ (float)ctx->opts.loopArcHeight, 45.0f,
&px, &py);
/* Draw a cross */
diff --git a/libmscgen/mscgen_gd_out.c b/libmscgen/mscgen_gd_out.c
index 8d8198c..72c79f5 100644
--- a/libmscgen/mscgen_gd_out.c
+++ b/libmscgen/mscgen_gd_out.c
@@ -180,7 +180,7 @@ unsigned int gdoTextWidth(struct ADrawTag *ctx,
const char *string)
{
#ifndef USE_FREETYPE
- const unsigned int l = strlen(string);
+ const unsigned int l = (unsigned int)strlen(string);
/* Remove 1 pixel since there is usually an uneven gap at
* the right of the last character for the fixed width
diff --git a/libmscgen/mscgen_language.y b/libmscgen/mscgen_language.y
index 0c0ab50..52dedb3 100644
--- a/libmscgen/mscgen_language.y
+++ b/libmscgen/mscgen_language.y
@@ -179,7 +179,7 @@ int yywrap()
char *removeEscapes(char *in)
{
- const uint16_t l = strlen(in);
+ const uint16_t l = (uint16_t)strlen(in);
char *r = (char *)malloc_s(l + 1);
uint16_t t, u;
@@ -209,6 +209,7 @@ Msc MscParse(FILE *in)
yyin = in;
+ lex_resetparser();
/* Parse, and check that no errors are found */
if(yyparse((void *)&m) != 0)
{
diff --git a/libmscgen/mscgen_lexer.h b/libmscgen/mscgen_lexer.h
index 0cbb21f..bba38c1 100644
--- a/libmscgen/mscgen_lexer.h
+++ b/libmscgen/mscgen_lexer.h
@@ -56,6 +56,7 @@ Boolean lex_getutf8(void);
unsigned long lex_getlinenum(void);
char *lex_getline(void);
void lex_destroy(void);
+void lex_resetparser(void);
#endif /* MSCGEN_LEXER_H */
diff --git a/libmscgen/mscgen_lexer.l b/libmscgen/mscgen_lexer.l
index 52f5e05..ea812f9 100644
--- a/libmscgen/mscgen_lexer.l
+++ b/libmscgen/mscgen_lexer.l
@@ -234,5 +234,12 @@ Boolean lex_getutf8(void)
return lex_utf8;
}
+void lex_resetparser()
+{
+ lex_linenum = 1;
+ lex_line = NULL;
+ lex_utf8 = FALSE;
+}
+
#include "mscgen_lexer.l.h"
/* END OF FILE */