view docs/html/sdlsetpalette.html @ 2268:4baee598306d

Date: Thu, 05 Jul 2007 14:02:33 -0700 From: Sam Lantinga Subject: SDL 1.3 keyboard plan After lots of discussion with Christian, this is what we came up with: > So, to sum up... > SDLK_* become the physical keys, starting at > (1<<21) > We create a macro SDLK_INDEX(X) > We have two functions SDL_GetLayoutKey(SDLKey) and SDL_GetKeyName() > SDL_GetLayoutKey maps to UCS4 for printable characters, and SDLK* for non-printable characters > and does so based on the OS's current keyboard layout > SDL_GetKeyName() handles both SDLK_* and UCS4, converting UCS4 to UTF-8 and converting SDLK_* into our names, which are UTF-8 for printable characters. > WASD folks use SDLK_*, and 'I' folks use SDL_GetLayoutKey(SDLK_*) Here is the patch he came up with, and his e-mail about it: Date: Fri, 17 Aug 2007 19:50:28 +0200 From: Christian Walther Subject: Re: SDL 1.3 keyboard plan > Sounds great, go ahead and send me a patch. Here goes! Thanks for having a look. Don't hesitate to comment if anything does not conform to your ideas. One caveat: Committing this now may break compilability of some video drivers - specifically, if they use any of the SDLK_* codes that were obsoleted and moved into SDL_compat.h. I only tried Cocoa (which did break, but is already fixed) and X11 (which didn't, but then its key handling is #iffed out). If that's a problem, it may need to go into a branch. -Christian
author Sam Lantinga <slouken@libsdl.org>
date Sun, 19 Aug 2007 14:52:52 +0000
parents 355632dca928
children
line wrap: on
line source

<HTML
><HEAD
><TITLE
>SDL_SetPalette</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="SDL Library Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Video"
HREF="video.html"><LINK
REL="PREVIOUS"
TITLE="SDL_SetColors"
HREF="sdlsetcolors.html"><LINK
REL="NEXT"
TITLE="SDL_SetGamma"
HREF="sdlsetgamma.html"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFF8DC"
TEXT="#000000"
LINK="#0000ee"
VLINK="#551a8b"
ALINK="#ff0000"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>SDL Library Documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="sdlsetcolors.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="sdlsetgamma.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><H1
><A
NAME="SDLSETPALETTE"
></A
>SDL_SetPalette</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN1517"
></A
><H2
>Name</H2
>SDL_SetPalette&nbsp;--&nbsp;Sets the colors in the palette of an 8-bit surface.</DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN1520"
></A
><H2
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><A
NAME="AEN1521"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include "SDL.h"</PRE
><P
><CODE
><CODE
CLASS="FUNCDEF"
>int <B
CLASS="FSFUNC"
>SDL_SetPalette</B
></CODE
>(SDL_Surface *surface, int flags, SDL_Color *colors, int firstcolor, int ncolors);</CODE
></P
><P
></P
></DIV
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1527"
></A
><H2
>Description</H2
><P
>Sets a portion of the palette for the given 8-bit surface.</P
><P
>Palettized (8-bit) screen surfaces with the
<TT
CLASS="LITERAL"
>SDL_HWPALETTE</TT
> flag have two palettes, a logical
palette that is used for mapping blits to/from the surface and a
physical palette (that determines how the hardware will map the colors
to the display). <A
HREF="sdlblitsurface.html"
>SDL_BlitSurface</A
>
always uses the logical palette when blitting surfaces (if it has to
convert between surface pixel formats). Because of this, it is often
useful to modify only one or the other palette to achieve various
special color effects (e.g., screen fading, color flashes, screen dimming).</P
><P
>This function can modify either the logical or physical palette by
specifing <TT
CLASS="LITERAL"
>SDL_LOGPAL</TT
> or
<TT
CLASS="LITERAL"
>SDL_PHYSPAL</TT
>the in the <TT
CLASS="PARAMETER"
><I
>flags</I
></TT
>
parameter.</P
><P
>When <TT
CLASS="PARAMETER"
><I
>surface</I
></TT
> is the surface associated with the current
display, the display colormap will be updated with the requested colors.  If
<TT
CLASS="LITERAL"
>SDL_HWPALETTE</TT
> was set in <A
HREF="sdlsetvideomode.html"
>SDL_SetVideoMode</A
> flags,
<TT
CLASS="FUNCTION"
>SDL_SetPalette</TT
> will always return <SPAN
CLASS="RETURNVALUE"
>1</SPAN
>,
and the palette is guaranteed to be set the way you desire, even if the window
colormap has to be warped or run under emulation.</P
><P
>The color components of a
<A
HREF="sdlcolor.html"
><SPAN
CLASS="STRUCTNAME"
>SDL_Color</SPAN
></A
> structure
are 8-bits in size, giving you a total of
256<SUP
>3</SUP
>=16777216 colors.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1547"
></A
><H2
>Return Value</H2
><P
>If <TT
CLASS="PARAMETER"
><I
>surface</I
></TT
> is not a palettized surface, this function
does nothing, returning <SPAN
CLASS="RETURNVALUE"
>0</SPAN
>.  If all of the colors were set
as passed to <TT
CLASS="FUNCTION"
>SDL_SetPalette</TT
>, it will return
<SPAN
CLASS="RETURNVALUE"
>1</SPAN
>.  If not all the color entries were set exactly as
given, it will return <SPAN
CLASS="RETURNVALUE"
>0</SPAN
>, and you should look at the
surface palette to determine the actual color palette.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1555"
></A
><H2
>Example</H2
><PRE
CLASS="PROGRAMLISTING"
>        /* Create a display surface with a grayscale palette */
        SDL_Surface *screen;
        SDL_Color colors[256];
        int i;
        .
        .
        .
        /* Fill colors with color information */
        for(i=0;i&#60;256;i++){
          colors[i].r=i;
          colors[i].g=i;
          colors[i].b=i;
        }

        /* Create display */
        screen=SDL_SetVideoMode(640, 480, 8, SDL_HWPALETTE);
        if(!screen){
          printf("Couldn't set video mode: %s\n", SDL_GetError());
          exit(-1);
        }

        /* Set palette */
        SDL_SetPalette(screen, SDL_LOGPAL|SDL_PHYSPAL, colors, 0, 256);
        .
        .
        .
        .</PRE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1558"
></A
><H2
>See Also</H2
><P
><A
HREF="sdlsetcolors.html"
>SDL_SetColors</A
>,
<A
HREF="sdlsetvideomode.html"
>SDL_SetVideoMode</A
>,
<A
HREF="sdlsurface.html"
>SDL_Surface</A
>,
<A
HREF="sdlcolor.html"
>SDL_Color</A
></P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="sdlsetcolors.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="sdlsetgamma.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>SDL_SetColors</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="video.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>SDL_SetGamma</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>