Wiki Page Content

Revision 13 as of 2011-03-29 19:29:51

Clear message

DRAFT

Style Guide: Function Pages

This guide provides specific instructions for editing or adding your own content to each section of the Function pages in this wiki.

General Guidelines

Function pages should provide basic information about the SDL functions to allow users to most effectively utilize them in their projects.

Please observe the following for all function pages:

  • Do not post anything that you do not have permission to post publicly.
  • Sections other than Code Examples and Remarks should have adequate details to make them clear and useful while remaining brief wherever possible. Code Examples and Remarks may be more extensive, as necessary.
  • Please remember to keep it accurate, simple, and easy to understand.
  • Do not remove, modify, or add section headings unless specifically mentioned below.

For assistance with editing, saving, or wiki-appropriate markup see the Wiki Basics Style Guide.

Return to Table of Contents

Editing Specific Sections

Title

Do not edit the Title.

The Title section consists of the page heading = SDL_FunctionName = and should match the address of the page and the function described on the page.

If you believe a change is necessary please contact us at <ANTI SPAM wiki AT libsdl DOT org>.

Return to Table of Contents

Description

The Description section immediately follows the page title and does not have it's own heading.

All function descriptions begin with:

  • Use this function to

  • followed by a clear and concise description of what the function does.

Note: Information presented in this section is meant to be limited. Extended description information for more complicated functions should be placed in the Remarks section instead.

red

Do not create a link to the Remarks section in the description if additional information is located there. (See the above Note.)

If another API page is referenced in the description

Action: As always, be sure to hyperlink it and use () outside the link markup if it is a function.

If a parameter on that page is referenced in the description

Action: Use bold for the parameter name.

Note: This is a very rare occurrence.

Note: If the reference is to the parameter as a concept (ie: the window) rather than directly to the parameter itself (ie: window) do not make it bold.
Please don't just make the word bold every time it occurs on the page.

Return to Table of Contents

Table of Contents

Do not edit the Table of Contents.

The Table of Contents consists of the following markup and is generated automatically on the parsed page.

  • <<TableOfContents()>>

If you believe a change is necessary please contact us at <ANTI SPAM wiki AT libsdl DOT org>.

Return to Table of Contents

Syntax

The Syntax section consists of a code box that displays the basic components of the function using some specific formatting conventions. Please apply the following conventions when editing this section.

The basic format is as follows:

{{{#!highlight cpp
returnType* SDL_FunctionName(type1  parameter1,
                             type2* parameter2,
                             ...
                             typeN  parameterN)
}}}

red

All types and parameters should be vertically aligned.

  • Spacing for parameter types is left-aligned to the type on the first line.

  • Spacing for parameters is left-aligned to the longest param type so that there is only 1 space between the longest type (with any pointers) and its parameter.

  • Pointers (*, **) should be aligned next to the types (no space between) and should have at least one space following.

Markup: Use spaces as necessary to create the correct alignment. Within a code box spacing is fixed-width.

Note: To be omitted

  • All additional text that may be found in the header or elsewhere, such as extern, SDLCALL, etc.
  • The space between SDL_FunctionName and (.

  • Ending semi-colon (;)

Note: To be included

  • A space between returnType and SDL_FunctionName

  • Commas at the end of each line if there is more than 1 param

Note: Do not remove or alter the code box markup surrounding the function syntax.

Example:

{{{#!highlight cpp

           1 space      no space  spaces (as needed)
              |             \    |_________|
SDL_AudioSpec* SDL_LoadWAV_RW(SDL_RWops*     src,
                              int            freesrc,
                              SDL_AudioSpec* spec,     <- longest type
                              Uint8**        audio_buf,   sets alignment
                              Uint32*        audio_len)
||||||||||||||||||||||||||||||      \       |
      spaces (as needed)          no space  1 space
}}}

Return to Table of Contents

Function Parameters

The Function Parameters section provides basic information about each parameter in the function and is presented in table format.

red

If the parameter is void

Action: Delete the entire Function Parameters section, including the header.

Example: SDL_AllocRW()

Otherwise, the basic format is as follows:

||'''parameter1'''||description||
||'''parameter2'''||description||
||'''parameterN'''||description||
  • The first column contains all of the parameter names, without types or pointers, in bold.

  • The second column contains a simple description of each parameter using some specific formatting conventions.

    • red

      All descriptions begin with a lower case letter, end without a period, and are generally not complete sentences.

  • There are a few content-dependent conventions we have chosen for consistency across pages - see the tables below for details.

Markup: Use basic table markup and enclose each parameter name in bold markup.

Example: SDL_SetColorKey()

Content-dependent formatting: General

If more than one statement must be included in the description

Action: Separate them with a semi-colon (;)

Note: This should be avoided whenever possible. See the next If statement in this table for more information.

If a more detailed description is required to adequately explain a parameter

Action 1 : Appended the following, verbatim, to the end of the brief description
; see [[#Remarks|Remarks]] for details

Action 2: Place the more detailed information in the Remarks section

Action 3: See the next If in this table

Example: SDL_CreateWindow()

If the Remarks section is large

Action 1: Create an anchor immediately before the additional comments you are adding to the Remarks section

Action 2: Modify the Remarks link in the parameter description (see Action 2 above) to the following:
; see [[#anchorname|Remarks]] for details
where anchorname matches the name you chose for the anchor in Action 1.

Markup: Use <<Anchor(anchorname)>> to create the anchor in the Remarks section. See Anchors for details.

If there is a pointer associated with the parameter

Action: Avoid mentioning pointers unless they are critical to understanding the parameter or there is little other way to describe it (ie: void*)

Example: SDL_SetColorKey()

If a pointer points to something that is filled in by the function or that has been filled in

Action: Use the phrase filled in with in the description

Example: SDL_QueryTexturePixels()

If the description mentions a structure that has a page

Action 1: Use the following pattern to describe the parameter:
the/an [[SDL_StructureName]] structure to <action> or representing <some piece of information>

Action 2: Check the table below for structure-specific phrasing.

Note: Be sure to hyperlink the structure name as shown.

Example: SDL_UnionRect()

If the description mentions a structure that does not have a page

Action: Use the plain English term to describe the structure (ie: SDL_Window == the window) and omit the hyperlink.

Note: These structures may eventually have pages or other references worth linking to, so please check for current status and follow the instructions above for linking to items with pages of their own if this is the case.

If a description must refer to any other page in the API

Action: Create a hyperlink to the page.

If the page is for an enumeration it is not necessary to describe it as an enumeration as above for structures.

If a description is referring to something that could be any one of a group of similar items (ie: rectangles)

Action: Begin the description with a/an

Example: SDL_HasIntersection()

Note: We realize that this is a somewhat arbitrary distinction depending upon your perspective. If you are unsure whether to use a/an or the it may be helpful to do a quick text search for other pages with the same or similar parameter and copy the format there. Ultimately, though, it's not worth losing sleep over. ;)

If a description is referring to a specific item from a group (ie: a window)

Action: Begin the description with the

Example: SDL_BlitScaled()

Note: We realize that this is a somewhat arbitrary distinction depending upon your perspective. If you are unsure whether to use a/an or the it may be helpful to do a quick text search for other pages with the same or similar parameter and copy the format there. Ultimately, though, it's not worth losing sleep over. ;)

If a parameter on that page is referenced in another parameter's description

Action: Use bold for the parameter name.

Note: This is a very rare occurrence.

Note: If the reference is to the parameter as a concept (ie: the window) rather than directly to the parameter itself (ie: window) do not make it bold.
Please don't just make the word bold every time it occurs on the page.

Note: It would only rarely be appropriate to use the exact same description of a common parameter every time that parameter appears in the API. However, the same or very similar description can be used for many occurrences of the same parameter, enhancing consistency across pages. The following table provides a list of these commonly used descriptions.

Action: When choosing a description phrase for a parameter please check this list to see if any of these common descriptions is applicable, even if a minor modification is required.

Content-dependent formatting: Specific

If the parameter is SDL_Palette* palette

Action 1: Most often this description begins with the [[SDL_Palette]] structure to, followed by what to do with the palette.

Action 2: The most common version is the [[SDL_Palette]] structure to use. Use as applicable.

Example: SDL_SetSurfacePalette(), SDL_FreePalette()

Note: Of course other phrases to describe this parameter may become necessary. A text search for "SDL_Palette* palette" should provide you with other descriptions if they arise.

If the parameter is SDL_Rect* rect(s)

Action 1 - rect: Most often this description begins with the/an [[SDL_Rect]] structure representing the rectangle to, followed by what the rectangle is for (ie: fill, draw, intersect, etc).

Action 2 - rects: When the parameter is plural it refers to an array and will most often begin with an array of [[SDL_Rect]] structures representing the rectangles to, followed by what the rectangle is for.

Example: SDL_FillRect(), SDL_RenderDrawRect(), SDL_IntersectRectAndLine(), SDL_RenderDrawRects()

Note: Of course there are some other phrases to describe these parameters. A text search for "SDL_Rect* rect" should provide you with plenty of other examples of both the singular and plural parameters.

If the parameter is SDL_Renderer* renderer

Action 1: A rare exception, this description is always the rendering context (at least so far).

red

Please use this description for all occurrences of this parameter unless/until it appears in the API in a different context that calls for another description. A text search for "SDL_Renderer* renderer" should be used to determine if this has become the case.

Example: SDL_RenderPresent(), SDL_RenderDrawLine(), SDL_CreateTexture()

If the parameter is SDL_Surface* surface

Action 1: Most often this description begins with the [[SDL_Surface]] structure to, followed by what is happening with the structure (ie: optimize, be locked, etc.).

Action 2: The most common versions are the [[SDL_Surface]] structure to update (often used with Set functions) or the [[SDL_Surface]] structure to query (often used with Get functions). Use as applicable.

Action 3: Some will be best described by the following instead: the [[SDL_Surface]] structure representing <something>.

Example: SDL_SetSurfaceRLE(), SDL_LockSurface(), SDL_GetClipRect(), SDL_SaveBMP_RW()

Note: Of course there are some other phrases to describe this parameter. A text search for "SDL_Surface* surface" should provide you with plenty of other examples.

If the parameter is SDL_Texture* texture

Action 1: Most often this description begins with the texture to, followed by what is being done (see Action 2).

Action 2: The most common versions are the texture to update (often used with Set functions) or the texture to query (often used with Get functions). Use as applicable.

Example: SDL_SetTextureAlphaMod(), SDL_QueryTexturePixels(), SDL_UnlockTexture()

Note: Of course there are some other phrases to describe this parameter. A text search for "SDL_Texture* texture" should provide you with plenty of other examples.

If the parameter is SDL_Window* window

Action 1: Most often this description begins with the window to, followed by what is being done (ie: minimize, maximize, show, etc).

Action 2: The most common versions are the window to change (often used with Set functions) or the window to query (often used with Get functions). Use as applicable.

Example: SDL_RestoreWindow(), SDL_SetWindowTitle(), SDL_GetWindowFlags()

Note: Of course there are some other phrases to describe this parameter. A text search for "SDL_Window* window" should provide you with plenty of examples.

Return to Table of Contents

Return Value

The Return Value section provides basic information about what, if anything, a function will return upon success or failure.

red

If the return value is void

Note: This is not the same as void*! See table below for void* return values.

Action: Delete the entire Return Value section, including the header.

Example: SDL_FreeSurface()

Otherwise, return values follow one of these 2 basic formats, depending upon whether a call to SDL_GetError() is relevant:

  • Returns <something> on success or <something else> on failure.

    or

    Returns <something> on success or <something else> on failure; call [[SDL_GetError]]() for more information.

Use the following tables to determine what to replace <something> and <something else> with using the applicable standard statement above, and to determine when some other action is required.

  • For simple replacements Action will only contain two replacement statements with the top being for success (<something>) and the bottom being for failure (<something else>).

  • Example: If the second column says
    Action: 0
    a negative error code
    then <something> should be replaced with the number 0 and <something else> should be replaced by the phrase a negative error code.

  • For complex replacements or other actions Action will detail what to do instead.

Options by Type

If the return value is 0 or <0

Action: 0
a negative error code

If the return value is a float or other int than above

Action: Replace <something> and <something else> with the applicable numbers.

Example: Returns 1 on success or 0 on failure.

If the return value is SDL_bool

Action:SDL_TRUE
SDL_FALSE

If the return value is a pointer or NULL

Action:Replace <something> with an appropriate description of the pointer (usually leaving out any mention of the pointer, as in parameters) and replace <something else> with NULL.

Note: See "If the return value type is a structure" below for more details.

Example: SDL_SetVideoMode()

If the return value type is a structure

Action: The general format will approximate: Returns a/an/the [[SDL_StructureName]] representing... for success. Failure statement will depend upon what is returned. See other Ifs for options.

Note: Ideally in this case, you would search for other functions using the same return value and replicate the phrasing of others as appropriate.

Example: SDL_CreateRGBSurfaceFrom()

If the return value is void*

Action:See "If the return value is a pointer or NULL" above.

Note: In some cases it will be appropriate to mention the pointer. Ideally, look at other similar functions for guidance.

Example: SDL_LoadFunction(), SDL_SetWindowData()

If the return value type is a Uint

Action: Replace <something> with a brief, appropriate description of the Uint.

Example: SDL_MapRGBA(), SDL_WasInit()

Note: Very rarely the Uint that is returned is a mask of enumerated values. See SDL_MasksToPixelFormatEnum() for an example of how to handle this.

If the return value type is a char or const char

Action: Replace <something> with a brief, appropriate description of the returned string.

Example: SDL_GetCurrentVideoDriver()

Non-type formatting conventions

If a parameter on that page is referenced in the return value

Action: Use bold for the parameter name.

Note: This is a very rare occurrence.

Note: If the reference is to the parameter as a concept (ie: the window) rather than directly to the parameter itself (ie: window) do not make it bold.
Please don't just make the word bold every time it occurs on the page.

Example: SDL_LoadWAV_RW(), SDL_GL_CreateContext()

If the return value mentions a structure that has a page

Action: Use the following pattern to describe the return value:
Returns the/an [[SDL_StructureName]] structure representing <some piece of information>

Note: Be sure to hyperlink the structure name as shown.

Example: SDL_UnionRect()

If the return value mentions a structure that does not have a page

Action: Use the plain English term to describe the structure (ie: SDL_Window == window).

Note: These structures may eventually have pages or other references worth linking to, in which case please follow the instructions above for linking to items with pages of their own.

If the return value must refer to any other page in the API

Action: Create a hyperlink to the page.

If the page is for an enumeration it is not necessary to describe it as an enumeration as above for structures.

Return to Table of Contents

Code Examples

The Code Examples section is meant to contain simple, meaningful examples of how to use the function in a program.

  • Unlike other sections which should rarely require editing once DRAFT is removed unless there are changes to the API, this section is expected to change over time.

This is one of the few sections that is intended to grow and adjust as users discover more information about a function that would be helpful to share with other users.

For the most part the contents of the Code Examples section will be user-generated and this section will remain as-is until users input their examples.

Please see the Code Examples Style Guide for details on editing this section.

Return to Table of Contents

Remarks

The Remarks section is meant to contain additional information that did not fit in the other sections as well as comments regarding the behavior and use of the function in real-world applications.

  • Unlike other sections which should rarely require editing once DRAFT is removed unless there are changes to the API, this section is expected to change over time.

This is one of the few sections that is intended to grow and adjust as users discover more information about how a function behaves under different circumstances.

For the most part the contents of the Remarks section will be user-generated and this section will remain as-is until users input their comments.

Note: This is not a good place to post questions or comments that require feedback. Please use the other communication channels available to you, especially the forums and Feedback form, for these types of remarks.

Please see the Remarks Style Guide for details on editing this section.

Return to Table of Contents

The Related Functions section provides a list of other functions specifically referenced by that function or otherwise closely related to it.

  • In general, a "Related Function" is one that is important to the use or understanding of the given function.

This list should not include:

  • every function that might be considered "related" as there can be an argument made for a "relationship" between large numbers of functions, making these lists less valuable
  • all functions of similar type or action
  • all functions of a related category
  • functions that are indirectly related

This list should include:

  • the opposite function in a function pair (ie: get/set, do/undo)
  • functions that represent close alternatives (general and specific versions)
  • functions that are called by or otherwise very closely related to the actions of that function

Example: Get and Set or Open and Close pairs would be listed here, but all other Window or all other Create functions would not.

The basic format for the Related Functions list is:

== Related Functions ==
 .[[SDL_FunctionName]]
 .[[SDL_FunctionName]]
  • Note: The heading was included to more clearly illustrate the blank space before the period at the beginning of each list line. Without this markup the format will not parse correctly.

If there is more than one function in the list list them in alphabetical order.

Note: Do not include the empty parentheses after the function names in this section.

The Related Functions section provides a list of other functions specifically referenced by that function or otherwise closely related.

  • {i} In general, a "Related Function" is one that is important to the use or understanding of the given function.

    • Example: Get and Set or Open and Close pairs would be listed here, but all other Window or all other Create functions would not.

    • This list should not include every function that might be considered "related" as there can be an argument made for a "relationship" between large numbers of functions, making these lists less valuable.

  • Related Functions should be listed in alphabetical order.
  • Replace OtherFunction in  .[[SDL_OtherFunction]] with the related function's name.

    • The single, blank space at the beginning of the line must remain.
    • The period (.) after the space must remain.

      (!) If there are multiple related functions it may be easier to copy and paste this line from the template as many times as there are functions and then edit each name rather than typing out all of the markup for new lines.

    • Do not use () after the function names in this section.

    {i} On occasion related functions will be listed in the header file, usually following \sa. Note that some items following \sa are not functions and should not be listed in Related Functions!

If a function does not currently have any related functions this section may be removed and added back at a later time.

(!) You may find more broadly related functions listed by category via the Category links in the footer section or by relationship in a broader, functional sense (often cross-category) on the Function Groups page(s) green

.

Return to Table of Contents

Return to Table of Contents


Resources

Our goal is to create accurate, consistent, helpful, user-friendly documentation. We appreciate your efforts to make your additions fit into the existing framework and retain the same look and feel as much as possible.

If you have questions that aren't addressed here:

  1. Search for another page that contains something similar to what you want to do and copy all the basics as much as applicable.
  2. Check the other SDL Style Guides.

  3. Post a question to Feedback and

include a way to contact you.

  1. Post a question to the Mailing List

  2. Send a comment or question to <ANTI SPAM wiki AT libsdl DOT org> for clarification.

If you have suggestions for changes or additions to this document or any other portion of the wiki please don't hesitate to contact us with your thoughts. We are happy to have the participation!


Disclaimer

All content modifications are subject to review for consistency and quality. We reserve the right to remove or modify any content added to this wiki at any time. You may direct questions or concerns to <ANTI SPAM wiki AT libsdl DOT org>.

(Page Info.)
Feedback
Please include your contact information if you'd like to receive a reply.
Submit