Deliantra-Client
view release on metacpan or search on metacpan
int SDL_GL_GetAttribute (int attr)
CODE:
if (SDL_GL_GetAttribute (attr, &RETVAL))
XSRETURN_UNDEF;
OUTPUT:
RETVAL
void
SDL_ListModes (int rgb, int alpha)
PPCODE:
{
SDL_Rect **m;
SDL_GL_SetAttribute (SDL_GL_RED_SIZE , rgb);
SDL_GL_SetAttribute (SDL_GL_GREEN_SIZE, rgb);
SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE , rgb);
SDL_GL_SetAttribute (SDL_GL_ALPHA_SIZE, alpha);
SDL_GL_SetAttribute (SDL_GL_BUFFER_SIZE, 15);
SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE , 0);
SDL_GetKeyName (int sym)
int
SDL_GetAppState ()
int
SDL_GetModState ()
void
poll_events ()
PPCODE:
{
SDL_Event ev;
SDL_PumpEvents ();
while (SDL_PeepEvents (&ev, 1, SDL_GETEVENT, SDL_ALLEVENTS) > 0)
{
HV *hv = newHV ();
hv_store (hv, "type", 4, newSViv (ev.type), 0);
switch (ev.type)
RETVAL
int
Mix_OpenAudio (int frequency = 44100, int format = MIX_DEFAULT_FORMAT, int channels = 2, int chunksize = 4096)
POSTCALL:
Mix_HookMusicFinished (music_finished);
Mix_ChannelFinished (channel_finished);
void
Mix_QuerySpec ()
PPCODE:
{
int freq, channels;
Uint16 format;
if (Mix_QuerySpec (&freq, &format, &channels))
{
EXTEND (SP, 3);
PUSHs (sv_2mortal (newSViv (freq)));
PUSHs (sv_2mortal (newSViv (format)));
PUSHs (sv_2mortal (newSViv (channels)));
const char *
Mix_GetError ()
void
lowdelay (int fd, int val = 1)
CODE:
setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, (void *)&val, sizeof (val));
void
win32_proxy_info ()
PPCODE:
{
#ifdef _WIN32
char buffer[2048];
DWORD buflen;
EXTEND (SP, 3);
buflen = sizeof (buffer);
if (InternetQueryOption (0, INTERNET_OPTION_PROXY, (void *)buffer, &buflen))
if (((INTERNET_PROXY_INFO *)buffer)->dwAccessType == INTERNET_OPEN_TYPE_PROXY)
add_font (char *file)
CODE:
RETVAL = FcConfigAppFontAddFile (0, (const FcChar8 *)file);
OUTPUT:
RETVAL
void
load_image_inline (SV *image_)
ALIAS:
load_image_file = 1
PPCODE:
{
STRLEN image_len;
char *image = (char *)SvPVbyte (image_, image_len);
SDL_Surface *surface, *surface2;
SDL_PixelFormat fmt;
SDL_RWops *rw = ix
? SDL_RWFromFile (image, "rb")
: SDL_RWFromConstMem (image, image_len);
if (!rw)
PUSHs (sv_2mortal (newSViv (GL_RGBA)));
PUSHs (sv_2mortal (newSViv (GL_UNSIGNED_BYTE)));
SDL_UnlockSurface (surface2);
SDL_FreeSurface (surface);
SDL_FreeSurface (surface2);
}
void
average (int x, int y, uint32_t *data)
PPCODE:
{
uint32_t r = 0, g = 0, b = 0, a = 0;
x = y = x * y;
while (x--)
{
uint32_t p = *data++;
r += (p ) & 255;
arg += 4;
pos += sizeof (OBJ_STR) - 1;
}
if (attrs)
pango_layout_set_attributes (self->pl, attrs);
}
void
get_shapes (DC::Layout self)
PPCODE:
{
PangoLayoutIter *iter = pango_layout_get_iter (self->pl);
do
{
PangoLayoutRun *run = pango_layout_iter_get_run_readonly (iter);
if (run && shape_attr_p (run))
{
PangoRectangle extents;
: PANGO_ELLIPSIZE_NONE
);
void
set_single_paragraph_mode (DC::Layout self, int spm)
CODE:
pango_layout_set_single_paragraph_mode (self->pl, !!spm);
void
size (DC::Layout self)
PPCODE:
{
int w, h;
layout_get_pixel_size (self, &w, &h);
EXTEND (SP, 2);
PUSHs (sv_2mortal (newSViv (w)));
PUSHs (sv_2mortal (newSViv (h)));
}
{
int index, trailing;
pango_layout_xy_to_index (self->pl, x * PANGO_SCALE, y * PANGO_SCALE, &index, &trailing);
RETVAL = index + trailing;
}
OUTPUT:
RETVAL
void
cursor_pos (DC::Layout self, int index)
PPCODE:
{
PangoRectangle pos;
pango_layout_get_cursor_pos (self->pl, index, &pos, 0);
EXTEND (SP, 3);
PUSHs (sv_2mortal (newSViv (pos.x / PANGO_SCALE)));
PUSHs (sv_2mortal (newSViv (pos.y / PANGO_SCALE)));
PUSHs (sv_2mortal (newSViv (pos.height / PANGO_SCALE)));
}
void
index_to_line_x (DC::Layout self, int index, int trailing = 0)
PPCODE:
{
int line, x;
pango_layout_index_to_line_x (self->pl, index, trailing, &line, &x);
#if !PANGO_VERSION_CHECK (1, 17, 3)
/* pango bug: line is between 1..numlines, not 0..numlines-1 */
--line;
#endif
EXTEND (SP, 2);
PUSHs (sv_2mortal (newSViv (line)));
PUSHs (sv_2mortal (newSViv (x / PANGO_SCALE)));
}
void
line_x_to_index (DC::Layout self, int line, int x)
PPCODE:
{
PangoLayoutLine *lp;
int index, trailing;
if (line < 0)
XSRETURN_EMPTY;
if (!(lp = pango_layout_get_line_readonly (self->pl, line)))
XSRETURN_EMPTY; /* do better */
glBindTexture (GL_TEXTURE_2D, name);
//glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
//glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
// use uglier nearest interpolation because linear suffers
// from transparent color bleeding and ugly wrapping effects.
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
}
void
expire_textures (DC::Map self, int texid, int count)
PPCODE:
for (; texid < self->texs && count; ++texid, --count)
{
maptex *tex = self->tex + texid;
if (tex->name)
{
if (tex->unused)
{
tex->name = 0;
tex->unused = 0;
}
}
glEnd ();
glDisable (GL_BLEND);
glDisable (GL_TEXTURE_2D);
}
void
fow_texture (DC::Map self, int mx, int my, int sw, int sh)
PPCODE:
{
int x, y;
int sw1 = sw + 2;
int sh1 = sh + 2;
int sh3 = sh * 3;
int sw3 = sw * 3;
uint8_t *darkness1 = (uint8_t *)malloc (sw1 * sh1);
SV *darkness3_sv = sv_2mortal (newSV (sw3 * sh3));
uint8_t *darkness3 = (uint8_t *)SvPVX (darkness3_sv);
SvCUR_set (data_sv, data - (uint8_t *)SvPVX (data_sv));
}
RETVAL = data_sv;
}
OUTPUT:
RETVAL
void
set_rect (DC::Map self, int x0, int y0, SV *data_sv)
PPCODE:
{
int x, y, z;
int w, h;
int x1, y1;
STRLEN len;
uint8_t *data, *end;
len = SvLEN (data_sv);
SvGROW (data_sv, len + 8); // reserve at least 7+ bytes more
data = SvPVbyte_nolen (data_sv);
set_reverse_stereo (DC::Channel self, int flip)
CODE:
Mix_SetReverseStereo (self, flip);
MODULE = Deliantra::Client PACKAGE = DC::MixChunk
PROTOTYPES: DISABLE
void
decoders ()
PPCODE:
#if SDL_MIXER_MAJOR_VERSION > 1 || SDL_MIXER_MINOR_VERSION > 2 || SDL_MIXER_PATCHLEVEL >= 10
int i, num = Mix_GetNumChunkDecoders ();
EXTEND (SP, num);
for (i = 0; i < num; ++i)
PUSHs (sv_2mortal (newSVpv (Mix_GetChunkDecoder (i), 0)));
#else
XPUSHs (sv_2mortal (newSVpv ("(sdl mixer too old)", 0)));
#endif
DC::MixChunk
Mix_Volume (RETVAL, 128);
}
}
OUTPUT:
RETVAL
MODULE = Deliantra::Client PACKAGE = DC::MixMusic
void
decoders ()
PPCODE:
#if SDL_MIXER_MAJOR_VERSION > 1 || SDL_MIXER_MINOR_VERSION > 2 || SDL_MIXER_PATCHLEVEL >= 10
int i, num = Mix_GetNumMusicDecoders ();
EXTEND (SP, num);
for (i = 0; i < num; ++i)
PUSHs (sv_2mortal (newSVpv (Mix_GetMusicDecoder (i), 0)));
#else
XPUSHs (sv_2mortal (newSVpv ("(sdl mixer too old)", 0)));
#endif
int
CODE:
glPixelStorei (GL_PACK_ALIGNMENT , 1);
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
MODULE = Deliantra::Client PACKAGE = DC::UI::Base
PROTOTYPES: DISABLE
void
find_widget (SV *self, NV x, NV y)
PPCODE:
{
if (within_widget (self, x, y))
XPUSHs (self);
}
BOOT:
{
hover_gv = gv_fetchpv ("DC::UI::HOVER", 1, SVt_NV);
draw_x_gv = gv_fetchpv ("DC::UI::Base::draw_x", 1, SVt_NV);
( run in 0.887 second using v1.01-cache-2.11-cpan-71847e10f99 )