Start integration branch for Symbian^3 Theme
The theme has been built using Carbide.ui on S60 5th Edition using the N97 plugin
The source code in sf/mw/uiresources/skins/Symbian/srcdata was used to generate the installable
SIS file which lives in the group directory, but the aim here is to build the theme
for delivery in the ROM (preferrably as the default theme).
Running "sbs -b bld.inf -c winscw" should build cleanly and deliver a matched set of files which
then show up in the Settings | Themes | General list. Attempting to install it produces "Theme Corrupted".
/*
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: Provides the palette methods.
*
*/
#include "Palette.h"
#include "NokiaBlue.h"
#include "PaletteConstants.h"
#ifndef DISABLE_256_COLOR_PALETTE_SWITCHING
#include "NokiaGreen.h"
#include "NokiaPurple.h"
#include "NokiaGrey.h"
#include "SchemeRed.h"
#include "SchemePink.h"
#include "SchemeOrange.h"
#include "Palette1.h"
#include "Palette2.h"
#include "Palette3.h"
#include "Palette4.h"
#include "Palette5.h"
#include "Palette6.h"
#include "Palette7.h"
#include "Palette8.h"
#include "Palette9.h"
#include "Palette10.h"
#include "Palette11.h"
#include "Palette12.h"
#include "Palette13.h"
#endif
class TColorSchemeStore
{
public:
static TSeries60ColorScheme Get();
static void Set(TSeries60ColorScheme aScheme);
};
enum TPalettePanic
{
EBadScheme
};
_LIT(KPanic, "Palette");
void Panic(TPalettePanic aCode)
{
User::Panic(KPanic, aCode);
}
const TUint32 color16array[16] = {
0x00000000, 0x00555555, 0x00000080, 0x00008080,
0x00008000, 0x000000ff, 0x0000ffff, 0x0000ff00,
0x00ff00ff, 0x00ff0000, 0x00ffff00, 0x00800080,
0x00800000, 0x00808000,0x00aaaaaa, 0x00ffffff };
const TUint8 color16inverse[512] = {
0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x05, 0x05, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x05, 0x05,
0x04, 0x04, 0x01, 0x03, 0x03, 0x03, 0x05, 0x05, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x05,
0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06,
0x07, 0x07, 0x07, 0x03, 0x03, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06,
0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x05, 0x05, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x05, 0x05,
0x04, 0x01, 0x01, 0x01, 0x03, 0x03, 0x05, 0x05, 0x04, 0x04, 0x01, 0x03, 0x03, 0x03, 0x03, 0x05,
0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06,
0x07, 0x07, 0x07, 0x03, 0x03, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06,
0x0c, 0x0c, 0x01, 0x0b, 0x0b, 0x0b, 0x05, 0x05, 0x0c, 0x01, 0x01, 0x01, 0x0b, 0x0b, 0x05, 0x05,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05,
0x0d, 0x0d, 0x01, 0x01, 0x03, 0x0e, 0x0e, 0x06, 0x0d, 0x0d, 0x01, 0x01, 0x0e, 0x0e, 0x0e, 0x06,
0x07, 0x07, 0x01, 0x01, 0x0e, 0x0e, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06,
0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x05, 0x0c, 0x0c, 0x01, 0x0b, 0x0b, 0x0b, 0x0b, 0x05,
0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x0d, 0x0d, 0x01, 0x01, 0x01, 0x0e, 0x0e, 0x0e,
0x0d, 0x0d, 0x01, 0x01, 0x0e, 0x0e, 0x0e, 0x0e, 0x0d, 0x0d, 0x01, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
0x0d, 0x0d, 0x01, 0x0e, 0x0e, 0x0e, 0x0e, 0x06, 0x07, 0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x06, 0x06,
0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x08, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x08,
0x0d, 0x0d, 0x01, 0x01, 0x0b, 0x0e, 0x0e, 0x08, 0x0d, 0x0d, 0x01, 0x01, 0x0e, 0x0e, 0x0e, 0x0e,
0x0d, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0a, 0x0a, 0x0a, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f,
0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0b, 0x08, 0x08, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0b, 0x08, 0x08,
0x0d, 0x0d, 0x01, 0x01, 0x0e, 0x0e, 0x0e, 0x08, 0x0d, 0x0d, 0x01, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
0x0a, 0x0a, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0a, 0x0a, 0x0a, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f,
0x09, 0x09, 0x09, 0x0b, 0x0b, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x0b, 0x0b, 0x08, 0x08, 0x08,
0x09, 0x09, 0x01, 0x01, 0x0e, 0x0e, 0x08, 0x08, 0x0d, 0x0d, 0x01, 0x0e, 0x0e, 0x0e, 0x0e, 0x08,
0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0a, 0x0a, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f,
0x0a, 0x0a, 0x0a, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0a, 0x0a, 0x0a, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f,
0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x08,
0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x0e, 0x0e, 0x0e, 0x08, 0x08,
0x0a, 0x0a, 0x0a, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0a, 0x0a, 0x0a, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f,
0x0a, 0x0a, 0x0a, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x0a, 0x0a, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f
};
#ifndef DISABLE_256_COLOR_PALETTE_SWITCHING
#define VIDEO_MEMORY_SCHEME_OFFSET(paletteSize, width, height, bytesPerPixel) ((paletteSize) + ((width)*((height)+1)*(bytesPerPixel)))
#ifdef __PALETTE_INDEX_ADDRESS_FIXED
#if defined __WINS__
TSeries60ColorScheme theSchemeMem = ESeries60ColorSchemeBlue;
TSeries60ColorScheme* const theScheme = &theSchemeMem;
#else
#define DEVICE_SCHEME_OFFSET VIDEO_MEMORY_SCHEME_OFFSET(DEVICE_VIDEO_PALETTE_SIZE, DEVICE_SCREEN_WIDTH, DEVICE_SCREEN_HEIGHT, DEVICE_BYTES_PER_PIXEL)
#define DEVICE_SCHEME_ADDR (DEVICE_VIDEO_ADDR + DEVICE_SCHEME_OFFSET)
TSeries60ColorScheme* const theScheme = (TSeries60ColorScheme*)(DEVICE_SCHEME_ADDR);
#endif
#endif
#endif // DISABLE_256_COLOR_PALETTE_SWITCHING
EXPORT_C const TUint32* DynamicPalette::Color16array()
{
return color16array;
}
EXPORT_C const TUint8* DynamicPalette::Color16inverse()
{
return color16inverse;
}
/**
*
* Returns the current system palette. Depending on the
* implementation this value depends on the current color
* scheme set using SetColorScheme.
*
* @returns "const TColor256Util*"
* Current system palette.
*/
EXPORT_C const TColor256Util* DynamicPalette::DefaultColor256Util()
{
#ifdef DISABLE_256_COLOR_PALETTE_SWITCHING
return &KNokiaBlueColor256Util;
#else // DISABLE_256_COLOR_PALETTE_SWITCHING
#ifndef __PALETTE_INDEX_ADDRESS_FIXED
TSeries60ColorScheme* theScheme = (TSeries60ColorScheme*)Dll::Tls();
if (!theScheme)
{
TPckgBuf<TScreenInfoV01> info;
UserSvr::ScreenInfo(info);
TInt offset = VIDEO_MEMORY_SCHEME_OFFSET(DEVICE_VIDEO_PALETTE_SIZE, info().iScreenSize.iWidth, info().iScreenSize.iHeight, DEVICE_BYTES_PER_PIXEL);
theScheme = (TSeries60ColorScheme*)(((TUint8*)info().iScreenAddress) + offset);
Dll::SetTls(theScheme);
}
#endif
switch (*theScheme)
{
case EIndex0:
return &KNokiaBlueColor256Util;
case EIndex1:
return &KNokiaGreenColor256Util;
case EIndex2:
return &KNokiaPurpleColor256Util;
case EIndex3:
return &KSchemeRedColor256Util;
case EIndex4:
return &KSchemePinkColor256Util;
case EIndex5:
return &KSchemeOrangeColor256Util;
case EIndex6:
return &KNokiaGreyColor256Util;
case EIndex7:
return &KPalette1Color256Util;
case EIndex8:
return &KPalette2Color256Util;
case EIndex9:
return &KPalette3Color256Util;
case EIndex10:
return &KPalette4Color256Util;
case EIndex11:
return &KPalette5Color256Util;
case EIndex12:
return &KPalette6Color256Util;
case EIndex13:
return &KPalette7Color256Util;
case EIndex14:
return &KPalette8Color256Util;
case EIndex15:
return &KPalette9Color256Util;
case EIndex16:
return &KPalette10Color256Util;
case EIndex17:
return &KPalette11Color256Util;
case EIndex18:
return &KPalette12Color256Util;
case EIndex19:
return &KPalette13Color256Util;
default:
return &KNokiaBlueColor256Util;
}
#endif // DISABLE_256_COLOR_PALETTE_SWITCHING
}
/**
*
* Sets the current color palette.
*
*/
#ifdef DISABLE_256_COLOR_PALETTE_SWITCHING
EXPORT_C void DynamicPalette::SetColor256Util(DynamicPalette::TIndex /*aScheme*/)
{
}
#else // DISABLE_256_COLOR_PALETTE_SWITCHING
EXPORT_C void DynamicPalette::SetColor256Util(DynamicPalette::TIndex aScheme)
{
#ifndef __PALETTE_INDEX_ADDRESS_FIXED
TSeries60ColorScheme* theScheme = (TSeries60ColorScheme*)Dll::Tls();
if (!theScheme)
{
TPckgBuf<TScreenInfoV01> info;
UserSvr::ScreenInfo(info);
TInt offset = VIDEO_MEMORY_SCHEME_OFFSET(DEVICE_VIDEO_PALETTE_SIZE, info().iScreenSize.iWidth, info().iScreenSize.iHeight, DEVICE_BYTES_PER_PIXEL);
theScheme = (TSeries60ColorScheme*)(((TUint8*)info().iScreenAddress) + offset);
Dll::SetTls(theScheme);
}
#endif
*theScheme = (TSeries60ColorScheme)(aScheme);
}
#endif // DISABLE_256_COLOR_PALETTE_SWITCHING
// End of File