//:Header:221, "llgfx_points", 3b93fefc
//
// File: llgfx_points.h
//
// G A M E.O.N.E - LOW LEVEL LIB V1.0
// Copyright (C) 2001 LEVEL ONE ENTERTAINMENT, 
// Licensed under the terms of LGPL.
//:---------------------------------------------------------------------------
//:Description
//
// Einzelne Pixel setzen.
//
// Experimental:
//  s_screenptr * _LIBCALL	llgfx_BeginPoint(llgfx_id idx);
// void _LIBCALL	llgfx_EndPoint(llgfx_id idx);
//
//:-----------------------------------------------------------------------------

#if !defined(LLGFX_POINTS_INCLUDED)
#define LLGFX_POINTS_INCLUDED

//:Include
#include "lib_base.h"
#include "ll3d_math.h"
#include "llgfx.h"


//:>                   +------------------------------------+
//:>-------------------|    Global Function Declarations    |-------------------
//:>                   +------------------------------------+


TxU32 llgfx_GetPoint( llgfx_id idx,
						int x,
						int y );

int llgfx_BeginGetPoints(llgfx_id idx);

TxU32 llgfx_GetPoint( int x, int y);

void llgfx_EndGetPoints();





//::1
// +---------------------+
// |  llgfx_DrawPoint()  |
// +---------------------+

void llgfx_DrawPoint(
	  llgfx_id idx,
	  int x,
	  int y,
	  TxU32 color);

inline void llgfx_DrawPoint(
	  llgfx_id idx,
	  float x,
	  float y,
	  TxU32 color)
{
	llgfx_DrawPoint( idx, ll3d::IntNearest(x), ll3d::IntNearest(y), color );
}

//::2
// +--------------------------+
// |  llgfx_DrawPointAlpha()  |
// +--------------------------+

void llgfx_DrawPointAlpha(
	   llgfx_id idx,
	   int x,
	   int y,
	   TxU8 alpha,
	   TxU32 color);

inline void llgfx_DrawPointAlpha(
	   llgfx_id idx,
	   float x,
	   float y,
	   TxU8 alpha,
	   TxU32 color)
{
	llgfx_DrawPointAlpha( idx, ll3d::IntNearest(x), ll3d::IntNearest(y), alpha, color );
}


int llgfx_BeginDrawPoints(llgfx_id idx);
int llgfx_BeginDrawPoints(llgfx_id idx, TxU32 color);
void llgfx_AddPoint( int x, int y);
void llgfx_AddPoint( int x, int y, TxU32 color);
void llgfx_AddPointAlpha( int x, int y );
void llgfx_AddPointAlpha( int x, int y, TxU32 color);
void llgfx_AddPointAlpha( int x, int y, TxU8 alpha, TxU32 color);

inline void llgfx_AddPoint( float x, float y)
{
	llgfx_AddPoint( ll3d::IntNearest(x), ll3d::IntNearest(y));
}
inline void llgfx_AddPoint( float x, float y, TxU32 color)
{
	llgfx_AddPoint( ll3d::IntNearest(x), ll3d::IntNearest(y), color );
}


void llgfx_EndDrawPoints();
void llgfx_SetPointColor(TxU32 color);
void llgfx_SetPointAlpha(TxU8 alpha);




#endif  							 // LLGFX_POINTS_INCLUDED