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
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
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