///////////////////////////////////////////////////////////////////////
// Header file: "VRDefs.h"
//
// (C) Copyright 2001, RightMark Gathering.  All Rights Reserved.
//
// @Author: Konstantin Mironovich (km) develop@rightmark3d.org
//
// Purpose: 
//   Contains defines for a number implementation dependent values
//   which describe whole 3D Scene complexity and features.
//
// History: 
//   2001/05/19 created. (km)
//   2001/12/21 modified for VR project. (km)
//
///////////////////////////////////////////////////////////////////////

#pragma once



#define VR_TIMESTAMP  __TIMESTAMP__
#define VR_COPYRIGHT_NOTICE \
"(C) Copyright 2001, RightMark3d Gathering.  All Rights Reserved."

#define CPURM_HOMEPAGE  "http://cpu.rightmark.org"
#define VR_HOMEPAGE     "http://www.virtualray.ru"
#define VR_PROFILE      "cputest.ini"

#include "TaskTypes.h"

namespace VR
{
///////////////////////////////////////////////////////////////////////
// Common definitions
//

#if !defined(WM_START)
#define WM_START                (WM_USER + 1)
#define WM_STOP                 (WM_USER + 2)
#define WM_STEP                 (WM_USER + 3)

// Used with WM_NOTIFY to control testing process
#define NOTIFY_START            10001
#define NOTIFY_STOP             10002
#define NOTIFY_STEP             10003
#endif

// Configuration traits
#define CFG_REGISTRY            0
#define CFG_PROFILE             1

// Result type enumerators
// renderer codeset/physics codeset
typedef enum
{
    RESULT_MMX_FPU              = 0,
    RESULT_SSE_FPU,
    RESULT_MMX_SSE2,
    RESULT_SSE_SSE2,
} RESULT_SERIES;

///////////////////////////////////////////////////////////////////////
// Scene parameter definitions
//
const int
    STARTFRAME_MIN              = 10,
    STARTFRAME_MAX              = 1000,
    TESTFRAME_MIN               = 10,
    TESTFRAME_MAX               = 1000000,
    TIMESTEP_MIN                = 1,
    TIMESTEP_MAX                = 100000,
    ITER_NUM_MIN                = 1,
    ITER_NUM_MAX                = 100000;


///////////////////////////////////////////////////////////////////////
// Renderer definitions:
//

// Main window style
//
#define VRWS_FULLSCREEN (WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_POPUP|WS_SYSMENU)
#define VRWS_WINDOWED   (WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_POPUPWINDOW \
                        |WS_CAPTION|WS_MINIMIZEBOX)

#define WINDOWED_WIDTH          640
#define WINDOWED_HEIGHT         480

// fullscreen setup values
//
#define MIN_DISPLAY_WIDTH       320
#define MIN_DISPLAY_HEIGHT      240
#define MIN_DISPLAY_FREQUENCY   60
#define MIN_DISPLAY_COLORDEPTH  16
#define SUPPORTED_COLORDEPTH    32

#define MAX_DISPLAY_WIDTH       1600
#define MAX_DISPLAY_HEIGHT      1200

#define DEFAULT_DISPLAY_WIDTH   800
#define DEFAULT_DISPLAY_HEIGHT  600

// some macros additional to WINGDI.H
//
#define RGBA(r, g, b, a) ((DWORD)(((a)<<24)|((b)<<16)|((g)<<8)|(r)))
#define GetAValue(rgb)   ((BYTE)((rgb)>>24))

// the colors supported as of Internet Explorer 4.0
//
#define CLR_BLACK           RGB(0x00,0x00,0x00)
#define CLR_WHITE           RGB(0xFF,0xFF,0xFF)

#define CLR_BISQUE          RGB(0xFF,0xE4,0xC4)
#define CLR_BURLYWOOD       RGB(0xDE,0xB8,0x87)
#define CLR_ORCHID          RGB(0xDA,0x70,0xD6)
#define CLR_PURPLE          RGB(0x80,0x00,0x80)
#define CLR_SANDYBROWN      RGB(0xF4,0xA4,0x60)
#define CLR_SADDLEBROWN     RGB(0x8B,0x45,0x13)
#define CLR_SKYBLUE         RGB(0x87,0xCE,0xEB)
#define CLR_STEELBLUE       RGB(0x46,0x82,0xB4)
#define CLR_YELLOWGREEN     RGB(0x9A,0xCD,0x32)
#define CLR_SEAGREEN        RGB(0x2E,0x8B,0x57)
#define CLR_MEDIUMVIOLETRED RGB(0xC7,0x15,0x85)
#define CLR_MAROON          RGB(0x80,0x00,0x00)
#define CLR_INDIANRED       RGB(0xCD,0x5C,0x5C)
#define CLR_INDIGO          RGB(0x4B,0x00,0x82)
#define CLR_NAVY            RGB(0x00,0x00,0x80)
#define CLR_KHAKY           RGB(0xF0,0xE6,0x8C)
#define CLR_DARKKHAKY       RGB(0xBD,0xB7,0x6B)

// font attributes
//
const long
    FONT_NORMAL         = 0x00000000L,
    FONT_BOLD           = 0x00000001L,
    FONT_HEAVY          = 0x00000002L,
    FONT_SIZE_MASK      = 0x0000000fL,

    FONT_ANTIALIASED    = 0x00000010L,
    FONT_NONANTIALIASED = 0x00000020L,

    FONT_ITALIC         = 0x00000100L,
    FONT_UNDERLINE      = 0x00000200L,
    FONT_STRIKEOUT      = 0x00000400L,

    FONT_REGULAR        = FONT_NORMAL,
    FONT_BLACK          = FONT_HEAVY;

};  // namespace VR

using namespace VR;
