Deliantra-Client

 view release on metacpan or  search on metacpan

Client.xs  view on Meta::CPAN


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);

Client.xs  view on Meta::CPAN

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)

Client.xs  view on Meta::CPAN

        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)));

Client.xs  view on Meta::CPAN

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)

Client.xs  view on Meta::CPAN

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)

Client.xs  view on Meta::CPAN

        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;

Client.xs  view on Meta::CPAN

            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;

Client.xs  view on Meta::CPAN

          :                  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)));
}

Client.xs  view on Meta::CPAN

{
	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 */

Client.xs  view on Meta::CPAN

       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;

Client.xs  view on Meta::CPAN

                }
            }

        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);

Client.xs  view on Meta::CPAN

            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);

Client.xs  view on Meta::CPAN

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

Client.xs  view on Meta::CPAN

            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

Client.xs  view on Meta::CPAN

	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 1.317 second using v1.01-cache-2.11-cpan-71847e10f99 )