Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
6dfb82db
Commit
6dfb82db
authored
Feb 03, 2015
by
devsaurus
Browse files
factor out integer argument processing
parent
18a44e7c
Changes
1
Show whitespace changes
Inline
Side-by-side
app/modules/u8g.c
View file @
6dfb82db
...
@@ -28,6 +28,7 @@ const static u8g_fntpgm_uint8_t *font_array[] =
...
@@ -28,6 +28,7 @@ const static u8g_fntpgm_uint8_t *font_array[] =
};
};
// helper function: retrieve and check userdata argument
static
lu8g_userdata_t
*
get_lud
(
lua_State
*
L
)
static
lu8g_userdata_t
*
get_lud
(
lua_State
*
L
)
{
{
lu8g_userdata_t
*
lud
=
(
lu8g_userdata_t
*
)
luaL_checkudata
(
L
,
1
,
"u8g.display"
);
lu8g_userdata_t
*
lud
=
(
lu8g_userdata_t
*
)
luaL_checkudata
(
L
,
1
,
"u8g.display"
);
...
@@ -35,6 +36,15 @@ static lu8g_userdata_t *get_lud( lua_State *L )
...
@@ -35,6 +36,15 @@ static lu8g_userdata_t *get_lud( lua_State *L )
return
lud
;
return
lud
;
}
}
// helper function: retrieve given number of integer arguments
static
void
lu8g_get_int_args
(
lua_State
*
L
,
uint8_t
stack
,
uint8_t
num
,
u8g_uint_t
*
args
)
{
while
(
num
--
>
0
)
{
*
args
++
=
luaL_checkinteger
(
L
,
stack
++
);
}
}
// Lua: u8g.setFont( self, font )
// Lua: u8g.setFont( self, font )
static
int
lu8g_setFont
(
lua_State
*
L
)
static
int
lu8g_setFont
(
lua_State
*
L
)
...
@@ -98,32 +108,27 @@ static int lu8g_generic_drawStr( lua_State *L, uint8_t rot )
...
@@ -98,32 +108,27 @@ static int lu8g_generic_drawStr( lua_State *L, uint8_t rot )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
uint8_t
stack
=
2
;
u8g_uint_t
x
=
luaL_checkinteger
(
L
,
stack
);
u8g_uint_t
args
[
2
];
stack
++
;
lu8g_get_int_args
(
L
,
2
,
2
,
args
);
u8g_uint_t
y
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
const
char
*
s
=
luaL_checkstring
(
L
,
stack
);
const
char
*
s
=
luaL_checkstring
(
L
,
(
1
+
2
)
+
1
);
stack
++
;
if
(
s
==
NULL
)
if
(
s
==
NULL
)
return
0
;
return
0
;
switch
(
rot
)
switch
(
rot
)
{
{
case
1
:
case
1
:
lua_pushinteger
(
L
,
u8g_DrawStr90
(
&
(
lud
->
u8g
),
x
,
y
,
s
)
);
lua_pushinteger
(
L
,
u8g_DrawStr90
(
&
(
lud
->
u8g
),
args
[
0
],
args
[
1
]
,
s
)
);
break
;
break
;
case
2
:
case
2
:
lua_pushinteger
(
L
,
u8g_DrawStr180
(
&
(
lud
->
u8g
),
x
,
y
,
s
)
);
lua_pushinteger
(
L
,
u8g_DrawStr180
(
&
(
lud
->
u8g
),
args
[
0
],
args
[
1
]
,
s
)
);
break
;
break
;
case
3
:
case
3
:
lua_pushinteger
(
L
,
u8g_DrawStr270
(
&
(
lud
->
u8g
),
x
,
y
,
s
)
);
lua_pushinteger
(
L
,
u8g_DrawStr270
(
&
(
lud
->
u8g
),
args
[
0
],
args
[
1
]
,
s
)
);
break
;
break
;
default:
default:
lua_pushinteger
(
L
,
u8g_DrawStr
(
&
(
lud
->
u8g
),
x
,
y
,
s
)
);
lua_pushinteger
(
L
,
u8g_DrawStr
(
&
(
lud
->
u8g
),
args
[
0
],
args
[
1
]
,
s
)
);
break
;
break
;
}
}
...
@@ -170,21 +175,11 @@ static int lu8g_drawLine( lua_State *L )
...
@@ -170,21 +175,11 @@ static int lu8g_drawLine( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
uint8_t
stack
=
2
;
u8g_uint_t
x1
=
luaL_checkinteger
(
L
,
stack
);
u8g_uint_t
args
[
4
];
stack
++
;
lu8g_get_int_args
(
L
,
2
,
4
,
args
);
u8g_uint_t
y1
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
x2
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
y2
=
luaL_checkinteger
(
L
,
stack
);
u8g_DrawLine
(
&
(
lud
->
u8g
),
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
]
);
stack
++
;
u8g_DrawLine
(
&
(
lud
->
u8g
),
x1
,
y1
,
x2
,
y2
);
return
0
;
return
0
;
}
}
...
@@ -196,27 +191,11 @@ static int lu8g_drawTriangle( lua_State *L )
...
@@ -196,27 +191,11 @@ static int lu8g_drawTriangle( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
uint8_t
stack
=
2
;
u8g_uint_t
x0
=
luaL_checkinteger
(
L
,
stack
)
;
u8g_uint_t
args
[
6
]
;
stack
++
;
lu8g_get_int_args
(
L
,
2
,
6
,
args
)
;
u8g_uint_t
y0
=
luaL_checkinteger
(
L
,
stack
);
u8g_DrawTriangle
(
&
(
lud
->
u8g
),
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
args
[
4
],
args
[
5
]
);
stack
++
;
u8g_uint_t
x1
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
y1
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
x2
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
y2
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_DrawTriangle
(
&
(
lud
->
u8g
),
x0
,
y0
,
x1
,
y1
,
x2
,
y2
);
return
0
;
return
0
;
}
}
...
@@ -228,21 +207,11 @@ static int lu8g_drawBox( lua_State *L )
...
@@ -228,21 +207,11 @@ static int lu8g_drawBox( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
uint8_t
stack
=
2
;
u8g_uint_t
x
=
luaL_checkinteger
(
L
,
stack
);
u8g_uint_t
args
[
4
];
stack
++
;
lu8g_get_int_args
(
L
,
2
,
4
,
args
);
u8g_uint_t
y
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
w
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
h
=
luaL_checkinteger
(
L
,
stack
);
u8g_DrawBox
(
&
(
lud
->
u8g
),
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
]
);
stack
++
;
u8g_DrawBox
(
&
(
lud
->
u8g
),
x
,
y
,
w
,
h
);
return
0
;
return
0
;
}
}
...
@@ -254,24 +223,11 @@ static int lu8g_drawRBox( lua_State *L )
...
@@ -254,24 +223,11 @@ static int lu8g_drawRBox( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
uint8_t
stack
=
2
;
u8g_uint_t
x
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
y
=
luaL_checkinteger
(
L
,
stack
);
u8g_uint_t
args
[
5
];
stack
++
;
lu8g_get_int_args
(
L
,
2
,
5
,
args
);
u8g_uint_t
w
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
h
=
luaL_checkinteger
(
L
,
stack
);
u8g_DrawRBox
(
&
(
lud
->
u8g
),
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
args
[
4
]
);
stack
++
;
u8g_uint_t
r
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_DrawRBox
(
&
(
lud
->
u8g
),
x
,
y
,
w
,
h
,
r
);
return
0
;
return
0
;
}
}
...
@@ -283,21 +239,11 @@ static int lu8g_drawFrame( lua_State *L )
...
@@ -283,21 +239,11 @@ static int lu8g_drawFrame( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
uint8_t
stack
=
2
;
u8g_uint_t
x
=
luaL_checkinteger
(
L
,
stack
)
;
u8g_uint_t
args
[
4
]
;
stack
++
;
lu8g_get_int_args
(
L
,
2
,
4
,
args
)
;
u8g_uint_t
y
=
luaL_checkinteger
(
L
,
stack
);
u8g_DrawFrame
(
&
(
lud
->
u8g
),
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
]
);
stack
++
;
u8g_uint_t
w
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
h
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_DrawFrame
(
&
(
lud
->
u8g
),
x
,
y
,
w
,
h
);
return
0
;
return
0
;
}
}
...
@@ -309,27 +255,11 @@ static int lu8g_drawRFrame( lua_State *L )
...
@@ -309,27 +255,11 @@ static int lu8g_drawRFrame( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
uint8_t
stack
=
2
;
if
(
lud
==
NULL
)
return
0
;
u8g_uint_t
x
=
luaL_checkinteger
(
L
,
stack
)
;
u8g_uint_t
args
[
5
]
;
stack
++
;
lu8g_get_int_args
(
L
,
2
,
5
,
args
)
;
u8g_uint_t
y
=
luaL_checkinteger
(
L
,
stack
);
u8g_DrawRFrame
(
&
(
lud
->
u8g
),
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
args
[
4
]
);
stack
++
;
u8g_uint_t
w
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
h
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
r
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_DrawRFrame
(
&
(
lud
->
u8g
),
x
,
y
,
w
,
h
,
r
);
return
0
;
return
0
;
}
}
...
@@ -341,21 +271,13 @@ static int lu8g_drawDisc( lua_State *L )
...
@@ -341,21 +271,13 @@ static int lu8g_drawDisc( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
uint8_t
stack
=
2
;
u8g_uint_t
x0
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
y0
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
rad
=
luaL_checkinteger
(
L
,
stack
)
;
u8g_uint_t
args
[
3
]
;
stack
++
;
lu8g_get_int_args
(
L
,
2
,
3
,
args
)
;
u8g_uint_t
opt
=
luaL_optinteger
(
L
,
stack
,
U8G_DRAW_ALL
);
u8g_uint_t
opt
=
luaL_optinteger
(
L
,
(
1
+
3
)
+
1
,
U8G_DRAW_ALL
);
stack
++
;
u8g_DrawDisc
(
&
(
lud
->
u8g
),
x0
,
y0
,
rad
,
opt
);
u8g_DrawDisc
(
&
(
lud
->
u8g
),
args
[
0
],
args
[
1
],
args
[
2
]
,
opt
);
return
0
;
return
0
;
}
}
...
@@ -367,21 +289,13 @@ static int lu8g_drawCircle( lua_State *L )
...
@@ -367,21 +289,13 @@ static int lu8g_drawCircle( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
uint8_t
stack
=
2
;
u8g_uint_t
x0
=
luaL_checkinteger
(
L
,
stack
);
stack
++
;
u8g_uint_t
y0
=
luaL_checkinteger
(
L
,
stack
)
;
u8g_uint_t
args
[
3
]
;
stack
++
;
lu8g_get_int_args
(
L
,
2
,
3
,
args
)
;
u8g_uint_t
rad
=
luaL_checkinteger
(
L
,
stack
);
u8g_uint_t
opt
=
luaL_optinteger
(
L
,
(
1
+
3
)
+
1
,
U8G_DRAW_ALL
);
stack
++
;
u8g_uint_t
opt
=
luaL_optinteger
(
L
,
stack
,
U8G_DRAW_ALL
);
stack
++
;
u8g_DrawCircle
(
&
(
lud
->
u8g
),
x0
,
y0
,
rad
,
opt
);
u8g_DrawCircle
(
&
(
lud
->
u8g
),
args
[
0
],
args
[
1
],
args
[
2
]
,
opt
);
return
0
;
return
0
;
}
}
...
...
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