Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Prog2
/
eloadas_peldak
/
ea_10
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
1c066383
authored
Apr 23, 2019
by
Szeberényi Imre
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SDL2
parent
c23cec52
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
159 additions
and
81 deletions
+159
-81
SDL_bboard/appshell.cpp
+2
-2
SDL_bboard/appshell.h
+3
-3
SDL_bboard/bboard.cbp
+7
-5
SDL_bboard/circle.cpp
+5
-5
SDL_bboard/main.cpp
+20
-16
SDL_bboard/memtrace.cpp
+49
-28
SDL_bboard/memtrace.h
+66
-15
SDL_bboard/widget.cpp
+1
-1
SDL_bboard/widget.h
+6
-6
No files found.
SDL_bboard/appshell.cpp
View file @
1c066383
...
...
@@ -16,7 +16,7 @@
/// Az objektum eseménykezelője ettől még dönthet úgy, hogy nem kezeli.
/// Kihasználható, hogy az eseménykezelő meghívása előtt mindig van contains hívás.
void
AppShell
::
mainLoop
()
{
SDL_
Flip
(
sc
r
);
SDL_
RenderPresent
(
rendere
r
);
SDL_Event
ev
;
Point
cursor
;
while
(
SDL_WaitEvent
(
&
ev
)
&&
ev
.
type
!=
SDL_QUIT
)
{
...
...
@@ -37,7 +37,7 @@ void AppShell::mainLoop() {
}
if
(
changed
)
{
// ha változhatott a rajz, frissíti a képernyőt
draw
();
SDL_
Flip
(
sc
r
);
SDL_
RenderPresent
(
rendere
r
);
}
}
}
SDL_bboard/appshell.h
View file @
1c066383
...
...
@@ -12,9 +12,9 @@
/// Az eseményhurokért, valamint az SDL és az alkalmazás kapcsolatáért felelős.
/// Widget konténerként tárolja a fő widgetpéldányokat.
struct
AppShell
:
public
Container
{
/// @param
scr - SDL screen
pointere
AppShell
(
SDL_
Surface
*
scr
)
{
Widget
::
set
Surface
(
scr
);
/// @param
ren - SDL renderer
pointere
AppShell
(
SDL_
Renderer
*
ren
)
{
Widget
::
set
Renderer
(
ren
);
}
/// maninLoop
...
...
SDL_bboard/bboard.cbp
View file @
1c066383
...
...
@@ -30,20 +30,22 @@
</Target>
</Build>
<Compiler>
<Add
option=
"-pedantic"
/>
<Add
option=
"-Wall"
/>
<Add
option=
"-std=c++11"
/>
<Add
directory=
"$(#sdl.include)"
/>
</Compiler>
<Linker>
<Add
library=
"mingw32"
/>
<Add
library=
"SDLmain"
/>
<Add
library=
"SDL
.dll
"
/>
<Add
library=
"SDL
2
main"
/>
<Add
library=
"SDL
2
"
/>
<Add
library=
"user32"
/>
<Add
library=
"gdi32"
/>
<Add
library=
"winmm"
/>
<Add
library=
"dxguid"
/>
<Add
library=
"SDL_gfx"
/>
<Add
library=
"SDL_image"
/>
<Add
library=
"SDL_ttf"
/>
<Add
library=
"SDL
2
_gfx"
/>
<Add
library=
"SDL
2
_image"
/>
<Add
library=
"SDL
2
_ttf"
/>
<Add
directory=
"$(#sdl.lib)"
/>
</Linker>
<Unit
filename=
"activebg.h"
/>
...
...
SDL_bboard/circle.cpp
View file @
1c066383
...
...
@@ -8,11 +8,11 @@
/// Kört rajzoló fv.
void
Circle
::
draw
()
const
{
if
(
fill
)
{
filledCircleColor
(
sc
r
,
p0
.
x
,
p0
.
y
,
r
,
fg
);
circleColor
(
sc
r
,
p0
.
x
,
p0
.
y
,
r
,
fg
);
filledCircleColor
(
rendere
r
,
p0
.
x
,
p0
.
y
,
r
,
fg
);
circleColor
(
rendere
r
,
p0
.
x
,
p0
.
y
,
r
,
fg
);
}
else
{
filledCircleColor
(
sc
r
,
p0
.
x
,
p0
.
y
,
r
,
bg
);
circleColor
(
sc
r
,
p0
.
x
,
p0
.
y
,
r
,
fg
);
filledCircleColor
(
rendere
r
,
p0
.
x
,
p0
.
y
,
r
,
bg
);
circleColor
(
rendere
r
,
p0
.
x
,
p0
.
y
,
r
,
fg
);
}
}
...
...
@@ -29,7 +29,7 @@ bool Circle::eventHandler(const SDL_Event& ev) {
draw
();
}
return
true
;
}
else
if
(
ev
.
type
==
SDL_MOUSEMOTION
&&
ev
.
motion
.
state
)
{
// drag
}
else
if
(
ev
.
type
==
SDL_MOUSEMOTION
&&
ev
.
motion
.
state
!=
0
)
{
// drag
move
(
Point
(
ev
.
motion
.
xrel
,
ev
.
motion
.
yrel
));
return
true
;
}
...
...
SDL_bboard/main.cpp
View file @
1c066383
...
...
@@ -44,15 +44,19 @@
#include "memtrace.h"
/// segédfüggvény az SDL inicializálásához
/// @return surface pointer vagy 0
SDL_Surface
*
init
()
{
if
(
SDL_Init
(
SDL_INIT_VIDEO
)
<
0
)
return
NULL
;
/// SDL jelen változata lezárja a szabványos kimeneteteket és fájlba ír.
/// Ezért újra kinyitjuk
std
::
freopen
(
"CON"
,
"w"
,
stdout
);
std
::
freopen
(
"CON"
,
"w"
,
stderr
);
return
SDL_SetVideoMode
(
1024
,
768
,
0
,
SDL_ANYFORMAT
);
/// @return renderer pointer vagy 0
SDL_Renderer
*
init
()
{
if
(
SDL_Init
(
SDL_INIT_EVERYTHING
)
<
0
)
{
return
0
;
}
SDL_Window
*
sdlWindow
;
SDL_Renderer
*
sdlRenderer
;
if
(
SDL_CreateWindowAndRenderer
(
640
,
480
,
SDL_WINDOW_RESIZABLE
,
&
sdlWindow
,
&
sdlRenderer
)
<
0
)
{
return
0
;
}
SDL_RenderClear
(
sdlRenderer
);
return
sdlRenderer
;
}
/// Bulletinboard kezelő panelje
...
...
@@ -99,14 +103,15 @@ void quit(const SDL_Event&, int) {
}
int
main
(
int
argc
,
char
**
argv
)
{
{
SDL_
Surface
*
screen
=
init
();
if
(
screen
==
NULL
)
{
std
::
cerr
<<
"Nem sikerult az
SDL INIT:
"
<<
SDL_GetError
()
<<
std
::
endl
;
SDL_
Renderer
*
renderer
=
init
();
if
(
renderer
==
NULL
)
{
std
::
cerr
<<
"Nem sikerult az
inicializálás
"
<<
SDL_GetError
()
<<
std
::
endl
;
return
1
;
}
// Application shell létrehozása
AppShell
app
(
screen
);
AppShell
app
(
renderer
);
Bboard
*
bb
=
new
Bboard
;
// Bulletinboard
// Bbpanel olyan osztály, ami segít a gombokat kezelni.
Bbpanel
panel
(
*
bb
);
// ismernie kell a Bulletinboard-ot
...
...
@@ -123,6 +128,5 @@ int main(int argc, char** argv) {
// eseményhurok
app
.
mainLoop
();
SDL_Quit
();
}
/// memtrace miatt minden egy belső blokkban van.
return
memtrace
::
mem_check
();
/// SDL kilépésekor már nem tud kiírni.
return
0
;
}
SDL_bboard/memtrace.cpp
View file @
1c066383
...
...
@@ -3,7 +3,11 @@ Memoriaszivargas-detektor
Keszitette: Peregi Tamas, BME IIT, 2011
petamas@iit.bme.hu
Kanari: Szeberenyi Imre, 2013.
VS 2012: Szeberényi Imre, 2015.,
mem_dump: 2016.
meset felszabaditaskor: 2018.
typo: 2019.
singleton: 2019.
*********************************/
/*definialni kell, ha nem paracssorbol allitjuk be (-DMEMTRACE) */
...
...
@@ -40,7 +44,7 @@ mem_dump: 2016.
/* Segedfuggvenyek es egyebek */
/*******************************************************************/
START_NAMESPACE
static
FILE
*
fperror
=
stderr
;
static
FILE
*
fperror
;
#ifdef MEMTRACE_TO_MEMORY
static
const
unsigned
int
CANARY_LEN
=
64
;
#else
...
...
@@ -123,37 +127,37 @@ START_NAMESPACE
}
/* memoriateruletet dump */
static
void
dump_memory
(
void
const
*
mem
,
size_t
size
,
size_t
can_len
)
{
static
void
dump_memory
(
void
const
*
mem
,
size_t
size
,
size_t
can_len
,
FILE
*
fp
)
{
unsigned
char
const
*
m
=
(
unsigned
char
const
*
)
mem
;
unsigned
int
s
,
o
;
if
(
can_len
>
0
)
fprintf
(
fp
error
,
"Dump (addr: %p kanari hossz: %d):
\n
"
,
m
+
can_len
,
can_len
);
fprintf
(
fp
,
"Dump (addr: %p kanari hossz: %d):
\n
"
,
m
+
can_len
,
(
int
)
can_len
);
else
fprintf
(
fp
error
,
"Dump: (addr: %p)
\n
"
,
m
);
fprintf
(
fp
,
"Dump: (addr: %p)
\n
"
,
m
);
size
+=
2
*
can_len
;
for
(
s
=
0
;
s
<
(
size
+
15
)
/
16
;
s
++
)
{
fprintf
(
fp
error
,
"%04x:%c "
,
s
*
16
,
s
*
16
<
can_len
||
s
*
16
>=
size
-
can_len
?
' '
:
'*'
);
fprintf
(
fp
,
"%04x:%c "
,
s
*
16
,
s
*
16
<
can_len
||
s
*
16
>=
size
-
can_len
?
' '
:
'*'
);
for
(
o
=
0
;
o
<
16
;
o
++
)
{
if
(
o
==
8
)
fprintf
(
fp
error
,
" "
);
if
(
o
==
8
)
fprintf
(
fp
,
" "
);
if
(
s
*
16
+
o
<
size
)
fprintf
(
fp
error
,
"%02x "
,
m
[
s
*
16
+
o
]);
fprintf
(
fp
,
"%02x "
,
m
[
s
*
16
+
o
]);
else
fprintf
(
fp
error
,
" "
);
fprintf
(
fp
,
" "
);
}
fprintf
(
fp
error
,
" "
);
fprintf
(
fp
,
" "
);
for
(
o
=
0
;
o
<
16
;
o
++
)
{
if
(
s
*
16
+
o
<
size
)
fprintf
(
fp
error
,
"%c"
,
isprint
(
m
[
s
*
16
+
o
])
?
m
[
s
*
16
+
o
]
:
'.'
);
fprintf
(
fp
,
"%c"
,
isprint
(
m
[
s
*
16
+
o
])
?
m
[
s
*
16
+
o
]
:
'.'
);
else
fprintf
(
fp
error
,
" "
);
fprintf
(
fp
,
" "
);
}
fprintf
(
fp
error
,
"
\n
"
);
fprintf
(
fp
,
"
\n
"
);
}
}
void
mem_dump
(
void
const
*
mem
,
size_t
size
)
{
dump_memory
(
mem
,
size
,
0
);
void
mem_dump
(
void
const
*
mem
,
size_t
size
,
FILE
*
fp
)
{
dump_memory
(
mem
,
size
,
0
,
fp
);
}
static
BOOL
dying
;
...
...
@@ -165,12 +169,12 @@ START_NAMESPACE
fprintf
(
fperror
,
"%s
\n
"
,
msg
);
if
(
p
)
{
fprintf
(
fperror
,
"
\t
Pointer:
\t
%p"
,
PU
(
p
));
if
(
size
)
fprintf
(
fperror
,
" (%
u byte)"
,
(
unsigned
)
size
);
if
(
size
)
fprintf
(
fperror
,
" (%
d byte)"
,
(
int
)
size
);
fprintf
(
fperror
,
"
\n
"
);
}
if
(
a
)
print_call
(
"
\t
Foglalas:
\t
"
,
*
a
);
if
(
d
)
print_call
(
"
\t
Felszabaditas:
\t
"
,
*
d
);
if
(
p
)
dump_memory
(
p
,
size
,
CANARY_LEN
);
if
(
p
)
dump_memory
(
p
,
size
,
CANARY_LEN
,
fperror
);
dying
=
TRUE
;
exit
(
120
);
...
...
@@ -197,7 +201,7 @@ START_NAMESPACE
static
void
print_registry_item
(
registry_item
*
p
)
{
if
(
p
)
{
print_registry_item
(
p
->
next
);
fprintf
(
fperror
,
"
\t
%p%5
u byte "
,
p
->
p
,
(
unsigned
)
p
->
size
);
fprintf
(
fperror
,
"
\t
%p%5
d byte "
,
p
->
p
,
(
int
)
p
->
size
);
print_call
(
NULL
,
p
->
call
);
if
(
p
->
call
.
par_txt
)
free
(
p
->
call
.
par_txt
);
if
(
p
->
call
.
file
)
free
(
p
->
call
.
file
);
...
...
@@ -205,9 +209,10 @@ START_NAMESPACE
}
}
/* ha nincs hiba, akkor 0-val tér vissza */
int
mem_check
(
void
)
{
initialize
();
if
(
dying
)
return
2
;
if
(
dying
)
return
2
;
/* címzési hiba */
if
(
registry
.
next
)
{
/*szivarog*/
...
...
@@ -217,7 +222,7 @@ START_NAMESPACE
fprintf
(
fperror
,
"Szivargas:
\n
"
);
print_registry_item
(
registry
.
next
);
registry
.
next
=
NULL
;
return
1
;
return
1
;
/* memória fogyás */
}
return
0
;
}
...
...
@@ -239,10 +244,15 @@ END_NAMESPACE
/*******************************************************************/
START_NAMESPACE
static
int
allocated_blks
;
int
allocated_blocks
()
{
return
allocated_blks
;
}
static
BOOL
register_memory
(
void
*
p
,
size_t
size
,
call_t
call
)
{
initialize
();
allocated_blks
++
;
#ifdef MEMTRACE_TO_FILE
fprintf
(
trace_file
,
"%p
\t
%d
\t
%s%s"
,
PU
(
p
),
size
,
pretty
[
call
.
f
],
call
.
par_txt
?
call
.
par_txt
:
"?"
);
fprintf
(
trace_file
,
"%p
\t
%d
\t
%s%s"
,
PU
(
p
),
(
int
)
size
,
pretty
[
call
.
f
],
call
.
par_txt
?
call
.
par_txt
:
"?"
);
if
(
call
.
f
<=
3
)
fprintf
(
trace_file
,
")"
);
fprintf
(
trace_file
,
"
\t
%d
\t
%s
\n
"
,
call
.
line
,
call
.
file
?
call
.
file
:
"?"
);
fflush
(
trace_file
);
...
...
@@ -282,6 +292,7 @@ START_NAMESPACE
{
/*C-blokk*/
registry_item
*
n
=
find_registry_item
(
p
);
if
(
n
->
next
)
{
allocated_blks
--
;
registry_item
*
r
=
n
->
next
;
n
->
next
=
r
->
next
;
if
(
COMP
(
r
->
call
.
f
,
call
.
f
))
{
...
...
@@ -295,13 +306,15 @@ START_NAMESPACE
if
(
r
->
call
.
par_txt
)
free
(
r
->
call
.
par_txt
);
if
(
call
.
file
)
free
(
call
.
file
);
if
(
r
->
call
.
file
)
free
(
r
->
call
.
file
);
memset
(
PU
(
r
->
p
),
'f'
,
r
->
size
);
PU
(
r
->
p
)[
r
->
size
-
1
]
=
0
;
free
(
r
);
}
else
{
/*hibas felszabaditas*/
die
(
"Hibas felszabaditas:"
,
r
->
p
,
r
->
size
,
&
r
->
call
,
&
call
);
}
}
else
{
die
(
"Nem letezo adat felszabaditasa:"
,
p
,
0
,
NULL
,
&
call
);
die
(
"Nem letezo
, vagy mar felszabaditott
adat felszabaditasa:"
,
p
,
0
,
NULL
,
&
call
);
}
}
/*C-blokk*/
#endif
...
...
@@ -309,7 +322,7 @@ START_NAMESPACE
END_NAMESPACE
/*******************************************************************/
/* C-st
lus memriakezel
s */
/* C-st
ílusú memóriakezelé
s */
/*******************************************************************/
#ifdef MEMTRACE_C
...
...
@@ -403,7 +416,7 @@ END_NAMESPACE
#endif
/*MEMTRACE_C*/
/*******************************************************************/
/* C++-st
lus memriakezel
s */
/* C++-st
ílusú memóriakezelé
s */
/*******************************************************************/
#ifdef MEMTRACE_CPP
...
...
@@ -420,7 +433,7 @@ START_NAMESPACE
void
set_delete_call
(
int
line
,
const
char
*
file
)
{
initialize
();
delete_call
=
pack
(
0
,
""
,
line
,
file
);
/*func
rtke lnyegtelen, majd fell
rjuk*/
delete_call
=
pack
(
0
,
""
,
line
,
file
);
/*func
értéke lényegtelen, majd felülí
rjuk*/
delete_called
=
TRUE
;
}
...
...
@@ -475,6 +488,17 @@ void operator delete(void * p) THROW_NOTHING {
void
operator
delete
[](
void
*
p
)
THROW_NOTHING
{
memtrace
::
traced_delete
(
p
,
FDELETEARR
);
}
/* Visual C++ 2012 miatt kell, mert háklis, hogy nincs megfelelő delete, bár senki sem használja */
void
operator
delete
(
void
*
p
,
int
,
const
char
*
)
THROW_NOTHING
{
memtrace
::
traced_delete
(
p
,
FDELETE
);
}
void
operator
delete
[](
void
*
p
,
int
,
const
char
*
)
THROW_NOTHING
{
memtrace
::
traced_delete
(
p
,
FDELETE
);
}
#endif
/*MEMTRACE_CPP*/
/*******************************************************************/
...
...
@@ -492,7 +516,7 @@ START_NAMESPACE
#ifdef MEMTRACE_TO_MEMORY
registry
.
next
=
NULL
;
#if !defined(USE_ATEXIT_OBJECT) && defined(MEMTRACE_AUTO)
atexit
((
void
(
*
)())
mem_check
);
atexit
((
void
(
*
)(
void
))
mem_check
);
#endif
#endif
#ifdef MEMTRACE_TO_FILE
...
...
@@ -506,8 +530,5 @@ START_NAMESPACE
}
}
#if defined(MEMTRACE_TO_MEMORY) && defined(USE_ATEXIT_OBJECT)
int
atexit_class
::
counter
=
0
;
#endif
END_NAMESPACE
#endif
SDL_bboard/memtrace.h
View file @
1c066383
...
...
@@ -3,7 +3,10 @@ Memoriaszivargas-detektor
Keszitette: Peregi Tamas, BME IIT, 2011
petamas@iit.bme.hu
Kanari: Szeberenyi Imre, 2013.,
VS 2012: Szeberényi Imre, 2015.,
mem_dump: 2016.
inclue-ok: 2017., 2018. 2019.
singleton: 2019.
*********************************/
#ifndef MEMTRACE_H
...
...
@@ -11,7 +14,7 @@ mem_dump: 2016.
#if defined(MEMTRACE)
/*ha defini
lva van, akkor a hibakat ebbe a fajlba rja, egy
bkent stderr-re*/
/*ha defini
álva van, akkor a hibakat ebbe a fajlba írja, egyé
bkent stderr-re*/
/*#define MEMTRACE_ERRFILE MEMTRACE.ERR*/
/*ha definialva van, akkor futas kozben lancolt listat epit. Javasolt a hasznalata*/
...
...
@@ -69,17 +72,34 @@ mem_dump: 2016.
#define TRACEC(func) func
#endif
/* A Visual Studio figyelmen kivul hagyja a "throw" deklaraciokat, a gcc -pedantic pedig igenyli.*/
#ifdef _MSC_VER
/* Ha studio */
// THROW deklaráció változatai
#if defined(_MSC_VER)
// VS rosszul kezeli az __cplusplus makrot
#if _MSC_VER < 1900
// * nem biztos, hogy jó így *
#define THROW_BADALLOC
#define THROW_NOTHING
#else
// C++11 vagy újabb
#define THROW_BADALLOC noexcept(false)
#define THROW_NOTHING noexcept
#endif
#else
/* Normalis forditok */
#if __cplusplus < 201103L
// C++2003 vagy régebbi
#define THROW_BADALLOC throw (std::bad_alloc)
#define THROW_NOTHING throw ()
#else
// C++11 vagy újabb
#define THROW_BADALLOC noexcept(false)
#define THROW_NOTHING noexcept
#endif
#endif
START_NAMESPACE
int
allocated_blocks
();
END_NAMESPACE
#if defined(MEMTRACE_TO_MEMORY)
START_NAMESPACE
int
mem_check
(
void
);
...
...
@@ -87,22 +107,35 @@ END_NAMESPACE
#endif
#if defined(MEMTRACE_TO_MEMORY) && defined(USE_ATEXIT_OBJECT)
#include <cstdio>
START_NAMESPACE
class
atexit_class
{
private
:
static
int
counter
;
public
:
atexit_class
()
{
counter
++
;
#if defined(CPORTA) && !defined(CPORTA_NOSETBUF)
setbuf
(
stdout
,
0
);
setbuf
(
stderr
,
0
);
#endif
}
public
:
static
atexit_class
&
get_atexit_obj
()
{
static
atexit_class
instance
;
// singleton példány
return
instance
;
}
~
atexit_class
()
{
if
(
--
counter
==
0
)
mem_check
();
int
check
()
{
return
mem_check
();
}
~
atexit_class
()
{
check
();
}
};
static
atexit_class
atexit_obj
;
/// A statikus referencia minden fordítási egységben keletkezik, de
/// mindegyik egyetlen példányra fog hivatkozni a singleton minta miatt
static
atexit_class
&
atexit_obj
=
atexit_class
::
get_atexit_obj
();
END_NAMESPACE
#endif
/*MEMTRACE_TO_MEMORY && USE_ATEXIT_OBJECT*/
...
...
@@ -111,8 +144,15 @@ END_NAMESPACE
#include <stdlib.h>
#ifdef __cplusplus
#include <iostream>
/* ide gyjtjk a nemtrace-vel sszeakad headereket, hogy elbb legyenek */
#include <fstream> // VS 2013 headerjben van deleted definici
/* ide gyűjtjük a nemtrace-vel összeakadó headereket, hogy előbb legyenek */
#include <fstream> // VS 2013 headerjében van deleted definició
#include <sstream>
#include <vector>
#include <list>
#include <map>
#include <algorithm>
#include <functional>
#endif
#ifdef MEMTRACE_CPP
namespace
std
{
...
...
@@ -138,7 +178,8 @@ START_NAMESPACE
#define realloc(old,size) TRACEC(traced_realloc)(old,size,#size,__LINE__,__FILE__)
void
*
traced_realloc
(
void
*
old
,
size_t
size
,
const
char
*
size_txt
,
int
line
,
const
char
*
file
);
void
mem_dump
(
void
const
*
mem
,
size_t
size
);
void
mem_dump
(
void
const
*
mem
,
size_t
size
,
FILE
*
fp
);
END_NAMESPACE
#endif
/*MEMTRACE_C*/
...
...
@@ -159,8 +200,18 @@ void * operator new[](size_t size) THROW_BADALLOC;
void
operator
delete
(
void
*
p
)
THROW_NOTHING
;
void
operator
delete
[](
void
*
p
)
THROW_NOTHING
;
/* Visual C++ 2012 miatt kell, mert háklis, hogy nincs megfelelő delete, bár senki sem használja */
void
operator
delete
(
void
*
p
,
int
,
const
char
*
)
THROW_NOTHING
;
void
operator
delete
[](
void
*
p
,
int
,
const
char
*
)
THROW_NOTHING
;
#define new new(__LINE__, __FILE__)
#define delete memtrace::set_delete_call(__LINE__, __FILE__),delete
#ifdef CPORTA
#define system(...) // system(__VA_ARGS__)
#endif
#endif
/*MEMTRACE_CPP*/
#endif
/*FROM_MEMTRACE_CPP*/
...
...
SDL_bboard/widget.cpp
View file @
1c066383
...
...
@@ -5,7 +5,7 @@
#include "widget.h"
#include "memtrace.h"
SDL_
Surface
*
Widget
::
sc
r
;
///< statikus tag létrehozása
SDL_
Renderer
*
Widget
::
rendere
r
;
///< statikus tag létrehozása
/// move - eltolja a widget origóját
/// @param d - eltolás
...
...
SDL_bboard/widget.h
View file @
1c066383
...
...
@@ -6,8 +6,8 @@
#ifndef WIDGET_H
#define WIDGET_H
#include <SDL.h>
#include <SDL_gfxPrimitives.h>
#include <SDL
2/sdl
.h>
#include <SDL
2/SDL2
_gfxPrimitives.h>
#include "point.h"
#include "color.h"
...
...
@@ -16,7 +16,7 @@
/// Nem szép megoldás, de szebb mintha globális lenne.
class
Widget
{
protected
:
static
SDL_
Surface
*
scr
;
///< eldugott globális változó
static
SDL_
Renderer
*
renderer
;
///< eldugott globális változó
Point
p0
;
///< Widget origója
Color
fg
;
///< Előtér szín
Color
bg
;
///< Háttérszín
...
...
@@ -27,9 +27,9 @@ public:
const
Color
&
fg
=
WHITE
,
const
Color
&
bg
=
BLACK
)
:
p0
(
p0
),
fg
(
fg
),
bg
(
bg
)
{}
///
suface
beállítása
/// @param
s - SDL surface
static
void
set
Surface
(
SDL_Surface
*
s
)
{
scr
=
s
;
}
///
renderer
beállítása
/// @param
r - SDL remderer
static
void
set
Renderer
(
SDL_Renderer
*
r
)
{
renderer
=
r
;
}
/// contains
/// Egy adott pontról eldönti, hogy a widget területére esik-e
...
...
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