/*
 * This file is autogenerated with bcop:
 * The Compiz option code generator
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <compiz.h>

#define _SCALEADDON_OPTIONS_INTERNAL
#include "scaleaddon_options.h"

static int displayPrivateIndex;

static CompMetadata scaleaddonOptionsMetadata;

static CompPluginVTable *scaleaddonPluginVTable = NULL;
CompPluginVTable scaleaddonOptionsVTable;

#define GET_SCALEADDON_OPTIONS_DISPLAY(d) \
        ((ScaleaddonOptionsDisplay *) (d)->privates[displayPrivateIndex].ptr)

#define SCALEADDON_OPTIONS_DISPLAY(d) \
        ScaleaddonOptionsDisplay *od = GET_SCALEADDON_OPTIONS_DISPLAY (d)

#define GET_SCALEADDON_OPTIONS_SCREEN(s, od) \
        ((ScaleaddonOptionsScreen *) (s)->privates[(od)->screenPrivateIndex].ptr)

#define SCALEADDON_OPTIONS_SCREEN(s) \
        ScaleaddonOptionsScreen *os = GET_SCALEADDON_OPTIONS_SCREEN (s, GET_SCALEADDON_OPTIONS_DISPLAY (s->display))

typedef struct _ScaleaddonOptionsDisplay
{
    int screenPrivateIndex;

    CompOption opt[ScaleaddonDisplayOptionNum];
    scaleaddonDisplayOptionChangeNotifyProc notify[ScaleaddonDisplayOptionNum];
} ScaleaddonOptionsDisplay;

typedef struct _ScaleaddonOptionsScreen
{
    CompOption opt[ScaleaddonScreenOptionNum];
    scaleaddonScreenOptionChangeNotifyProc notify[ScaleaddonScreenOptionNum];
} ScaleaddonOptionsScreen;

CompAction * scaleaddonGetClose (CompDisplay *d)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    return &od->opt[ScaleaddonDisplayOptionClose].value.action;
}

void scaleaddonSetCloseInitiate (CompDisplay *d, CompActionCallBackProc init)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    od->opt[ScaleaddonDisplayOptionClose].value.action.initiate = init;
}

void scaleaddonSetCloseTerminate (CompDisplay *d, CompActionCallBackProc term)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    od->opt[ScaleaddonDisplayOptionClose].value.action.terminate = term;
}

CompOption * scaleaddonGetCloseOption (CompDisplay *d)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    return &od->opt[ScaleaddonDisplayOptionClose];
}

void scaleaddonSetCloseNotify (CompDisplay *d, scaleaddonDisplayOptionChangeNotifyProc notify)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    od->notify[ScaleaddonDisplayOptionClose] = notify;
}

CompAction * scaleaddonGetZoom (CompDisplay *d)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    return &od->opt[ScaleaddonDisplayOptionZoom].value.action;
}

void scaleaddonSetZoomInitiate (CompDisplay *d, CompActionCallBackProc init)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    od->opt[ScaleaddonDisplayOptionZoom].value.action.initiate = init;
}

void scaleaddonSetZoomTerminate (CompDisplay *d, CompActionCallBackProc term)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    od->opt[ScaleaddonDisplayOptionZoom].value.action.terminate = term;
}

CompOption * scaleaddonGetZoomOption (CompDisplay *d)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    return &od->opt[ScaleaddonDisplayOptionZoom];
}

void scaleaddonSetZoomNotify (CompDisplay *d, scaleaddonDisplayOptionChangeNotifyProc notify)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    od->notify[ScaleaddonDisplayOptionZoom] = notify;
}

Bool scaleaddonGetWindowTitle (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionWindowTitle].value.b;
}

CompOption * scaleaddonGetWindowTitleOption (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return &os->opt[ScaleaddonScreenOptionWindowTitle];
}

void scaleaddonSetWindowTitleNotify (CompScreen *s, scaleaddonScreenOptionChangeNotifyProc notify)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    os->notify[ScaleaddonScreenOptionWindowTitle] = notify;
}

Bool scaleaddonGetTitleBold (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionTitleBold].value.b;
}

CompOption * scaleaddonGetTitleBoldOption (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return &os->opt[ScaleaddonScreenOptionTitleBold];
}

void scaleaddonSetTitleBoldNotify (CompScreen *s, scaleaddonScreenOptionChangeNotifyProc notify)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    os->notify[ScaleaddonScreenOptionTitleBold] = notify;
}

int scaleaddonGetTitleSize (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionTitleSize].value.i;
}

CompOption * scaleaddonGetTitleSizeOption (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return &os->opt[ScaleaddonScreenOptionTitleSize];
}

void scaleaddonSetTitleSizeNotify (CompScreen *s, scaleaddonScreenOptionChangeNotifyProc notify)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    os->notify[ScaleaddonScreenOptionTitleSize] = notify;
}

int scaleaddonGetBorderSize (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionBorderSize].value.i;
}

CompOption * scaleaddonGetBorderSizeOption (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return &os->opt[ScaleaddonScreenOptionBorderSize];
}

void scaleaddonSetBorderSizeNotify (CompScreen *s, scaleaddonScreenOptionChangeNotifyProc notify)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    os->notify[ScaleaddonScreenOptionBorderSize] = notify;
}

unsigned short * scaleaddonGetFontColor (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionFontColor].value.c;
}

unsigned short scaleaddonGetFontColorRed (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionFontColor].value.c[0];
}

unsigned short scaleaddonGetFontColorGreen (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionFontColor].value.c[1];
}

unsigned short scaleaddonGetFontColorBlue (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionFontColor].value.c[2];
}

unsigned short scaleaddonGetFontColorAlpha (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionFontColor].value.c[3];
}

CompOption * scaleaddonGetFontColorOption (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return &os->opt[ScaleaddonScreenOptionFontColor];
}

void scaleaddonSetFontColorNotify (CompScreen *s, scaleaddonScreenOptionChangeNotifyProc notify)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    os->notify[ScaleaddonScreenOptionFontColor] = notify;
}

unsigned short * scaleaddonGetBackColor (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionBackColor].value.c;
}

unsigned short scaleaddonGetBackColorRed (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionBackColor].value.c[0];
}

unsigned short scaleaddonGetBackColorGreen (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionBackColor].value.c[1];
}

unsigned short scaleaddonGetBackColorBlue (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionBackColor].value.c[2];
}

unsigned short scaleaddonGetBackColorAlpha (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionBackColor].value.c[3];
}

CompOption * scaleaddonGetBackColorOption (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return &os->opt[ScaleaddonScreenOptionBackColor];
}

void scaleaddonSetBackColorNotify (CompScreen *s, scaleaddonScreenOptionChangeNotifyProc notify)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    os->notify[ScaleaddonScreenOptionBackColor] = notify;
}

Bool scaleaddonGetWindowHighlight (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionWindowHighlight].value.b;
}

CompOption * scaleaddonGetWindowHighlightOption (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return &os->opt[ScaleaddonScreenOptionWindowHighlight];
}

void scaleaddonSetWindowHighlightNotify (CompScreen *s, scaleaddonScreenOptionChangeNotifyProc notify)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    os->notify[ScaleaddonScreenOptionWindowHighlight] = notify;
}

unsigned short * scaleaddonGetHighlightColor (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionHighlightColor].value.c;
}

unsigned short scaleaddonGetHighlightColorRed (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionHighlightColor].value.c[0];
}

unsigned short scaleaddonGetHighlightColorGreen (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionHighlightColor].value.c[1];
}

unsigned short scaleaddonGetHighlightColorBlue (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionHighlightColor].value.c[2];
}

unsigned short scaleaddonGetHighlightColorAlpha (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionHighlightColor].value.c[3];
}

CompOption * scaleaddonGetHighlightColorOption (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return &os->opt[ScaleaddonScreenOptionHighlightColor];
}

void scaleaddonSetHighlightColorNotify (CompScreen *s, scaleaddonScreenOptionChangeNotifyProc notify)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    os->notify[ScaleaddonScreenOptionHighlightColor] = notify;
}

int scaleaddonGetLayoutMode (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return os->opt[ScaleaddonScreenOptionLayoutMode].value.i;
}

CompOption * scaleaddonGetLayoutModeOption (CompScreen *s)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return &os->opt[ScaleaddonScreenOptionLayoutMode];
}

void scaleaddonSetLayoutModeNotify (CompScreen *s, scaleaddonScreenOptionChangeNotifyProc notify)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    os->notify[ScaleaddonScreenOptionLayoutMode] = notify;
}

CompOption * scaleaddonGetDisplayOption (CompDisplay *d, ScaleaddonDisplayOptions num)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    return &od->opt[num];
}

CompOption * scaleaddonGetScreenOption (CompScreen *s, ScaleaddonScreenOptions num)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    return &os->opt[num];
}

static const CompMetadataOptionInfo scaleaddonOptionsDisplayOptionInfo[] = {
    { "close", "action", 0, 0, 0 },
    { "zoom", "action", 0, 0, 0 },
};

static Bool scaleaddonOptionsSetDisplayOption (CompPlugin *plugin, CompDisplay *d, char *name, CompOptionValue *value)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    CompOption *o;
    int        index;

    o = compFindOption (od->opt, ScaleaddonDisplayOptionNum, name, &index);

    if (!o)
        return FALSE;

    switch (index)
    {
     case ScaleaddonDisplayOptionClose:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[ScaleaddonDisplayOptionClose])
                (*od->notify[ScaleaddonDisplayOptionClose]) (d, o, ScaleaddonDisplayOptionClose);
            return TRUE;
        }
        break;
     case ScaleaddonDisplayOptionZoom:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[ScaleaddonDisplayOptionZoom])
                (*od->notify[ScaleaddonDisplayOptionZoom]) (d, o, ScaleaddonDisplayOptionZoom);
            return TRUE;
        }
        break;
    default:
        break;
    }
    return FALSE;
}

static CompOption * scaleaddonOptionsGetDisplayOptions (CompPlugin *plugin, CompDisplay *d, int *count)
{
    SCALEADDON_OPTIONS_DISPLAY(d);
    *count = ScaleaddonDisplayOptionNum;
    return od->opt;
}

static const CompMetadataOptionInfo scaleaddonOptionsScreenOptionInfo[] = {
    { "window_title", "bool", 0, 0, 0 },
    { "title_bold", "bool", 0, 0, 0 },
    { "title_size", "int", "<min>6</min><max>48</max>", 0, 0 },
    { "border_size", "int", "<min>1</min><max>20</max>", 0, 0 },
    { "font_color", "color", 0, 0, 0 },
    { "back_color", "color", 0, 0, 0 },
    { "window_highlight", "bool", 0, 0, 0 },
    { "highlight_color", "color", 0, 0, 0 },
    { "layout_mode", "int", "<min>0</min><max>0</max>", 0, 0 },
};

static Bool scaleaddonOptionsSetScreenOption (CompPlugin *plugin, CompScreen *s, char *name, CompOptionValue *value)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    CompOption *o;
    int        index;

    o = compFindOption (os->opt, ScaleaddonScreenOptionNum, name, &index);

    if (!o)
        return FALSE;

    switch (index)
    {
     case ScaleaddonScreenOptionWindowTitle:
        if (compSetScreenOption (s, o, value))
        {
            if (os->notify[ScaleaddonScreenOptionWindowTitle])
                (*os->notify[ScaleaddonScreenOptionWindowTitle]) (s, o, ScaleaddonScreenOptionWindowTitle);
            return TRUE;
        }
        break;
     case ScaleaddonScreenOptionTitleBold:
        if (compSetScreenOption (s, o, value))
        {
            if (os->notify[ScaleaddonScreenOptionTitleBold])
                (*os->notify[ScaleaddonScreenOptionTitleBold]) (s, o, ScaleaddonScreenOptionTitleBold);
            return TRUE;
        }
        break;
     case ScaleaddonScreenOptionTitleSize:
        if (compSetScreenOption (s, o, value))
        {
            if (os->notify[ScaleaddonScreenOptionTitleSize])
                (*os->notify[ScaleaddonScreenOptionTitleSize]) (s, o, ScaleaddonScreenOptionTitleSize);
            return TRUE;
        }
        break;
     case ScaleaddonScreenOptionBorderSize:
        if (compSetScreenOption (s, o, value))
        {
            if (os->notify[ScaleaddonScreenOptionBorderSize])
                (*os->notify[ScaleaddonScreenOptionBorderSize]) (s, o, ScaleaddonScreenOptionBorderSize);
            return TRUE;
        }
        break;
     case ScaleaddonScreenOptionFontColor:
        if (compSetScreenOption (s, o, value))
        {
            if (os->notify[ScaleaddonScreenOptionFontColor])
                (*os->notify[ScaleaddonScreenOptionFontColor]) (s, o, ScaleaddonScreenOptionFontColor);
            return TRUE;
        }
        break;
     case ScaleaddonScreenOptionBackColor:
        if (compSetScreenOption (s, o, value))
        {
            if (os->notify[ScaleaddonScreenOptionBackColor])
                (*os->notify[ScaleaddonScreenOptionBackColor]) (s, o, ScaleaddonScreenOptionBackColor);
            return TRUE;
        }
        break;
     case ScaleaddonScreenOptionWindowHighlight:
        if (compSetScreenOption (s, o, value))
        {
            if (os->notify[ScaleaddonScreenOptionWindowHighlight])
                (*os->notify[ScaleaddonScreenOptionWindowHighlight]) (s, o, ScaleaddonScreenOptionWindowHighlight);
            return TRUE;
        }
        break;
     case ScaleaddonScreenOptionHighlightColor:
        if (compSetScreenOption (s, o, value))
        {
            if (os->notify[ScaleaddonScreenOptionHighlightColor])
                (*os->notify[ScaleaddonScreenOptionHighlightColor]) (s, o, ScaleaddonScreenOptionHighlightColor);
            return TRUE;
        }
        break;
     case ScaleaddonScreenOptionLayoutMode:
        if (compSetScreenOption (s, o, value))
        {
            if (os->notify[ScaleaddonScreenOptionLayoutMode])
                (*os->notify[ScaleaddonScreenOptionLayoutMode]) (s, o, ScaleaddonScreenOptionLayoutMode);
            return TRUE;
        }
        break;
    default:
        break;
    }
    return FALSE;
}

static CompOption * scaleaddonOptionsGetScreenOptions (CompPlugin *plugin, CompScreen *s, int *count)
{
    SCALEADDON_OPTIONS_SCREEN(s);
    *count = ScaleaddonScreenOptionNum;
    return os->opt;
}

static Bool scaleaddonOptionsInitScreen (CompPlugin *p, CompScreen *s)
{
    ScaleaddonOptionsScreen *os;
    
    SCALEADDON_OPTIONS_DISPLAY (s->display);

    os = calloc (1, sizeof(ScaleaddonOptionsScreen));
    if (!os)
        return FALSE;

    s->privates[od->screenPrivateIndex].ptr = os;

    if (!compInitScreenOptionsFromMetadata (s, &scaleaddonOptionsMetadata, scaleaddonOptionsScreenOptionInfo, os->opt, ScaleaddonScreenOptionNum))
    {
        free (os);
        return FALSE;
    }
    if (scaleaddonPluginVTable && scaleaddonPluginVTable->initScreen)
        return scaleaddonPluginVTable->initScreen (p, s);
    return TRUE;
}

static void scaleaddonOptionsFiniScreen (CompPlugin *p, CompScreen *s)
{
    if (scaleaddonPluginVTable && scaleaddonPluginVTable->finiScreen)
        return scaleaddonPluginVTable->finiScreen (p, s);

    SCALEADDON_OPTIONS_SCREEN (s);


    compFiniScreenOptions (s, os->opt, ScaleaddonScreenOptionNum);

    free (os);
}

static Bool scaleaddonOptionsInitDisplay (CompPlugin *p, CompDisplay *d)
{
    ScaleaddonOptionsDisplay *od;
   
    
    od = calloc (1, sizeof(ScaleaddonOptionsDisplay));
    if (!od)
        return FALSE;

    od->screenPrivateIndex = allocateScreenPrivateIndex(d);
    if (od->screenPrivateIndex < 0)
    {
        free(od);
        return FALSE;
    }

    d->privates[displayPrivateIndex].ptr = od;

    if (!compInitDisplayOptionsFromMetadata (d, &scaleaddonOptionsMetadata, scaleaddonOptionsDisplayOptionInfo, od->opt, ScaleaddonDisplayOptionNum))
    {
        free (od);
        return FALSE;
    }
    if (scaleaddonPluginVTable && scaleaddonPluginVTable->initDisplay)
        return scaleaddonPluginVTable->initDisplay (p, d);
    return TRUE;
}

static void scaleaddonOptionsFiniDisplay (CompPlugin *p, CompDisplay *d)
{
    if (scaleaddonPluginVTable && scaleaddonPluginVTable->finiDisplay)
        return scaleaddonPluginVTable->finiDisplay (p, d);

    SCALEADDON_OPTIONS_DISPLAY (d);

    freeScreenPrivateIndex(d, od->screenPrivateIndex);

    compFiniDisplayOptions (d, od->opt, ScaleaddonDisplayOptionNum);

    free (od);
}

static Bool scaleaddonOptionsInit (CompPlugin *p)
{
    displayPrivateIndex = allocateDisplayPrivateIndex();
    if (displayPrivateIndex < 0)
        return FALSE;

    if (!compInitPluginMetadataFromInfo (&scaleaddonOptionsMetadata, "scaleaddon",scaleaddonOptionsDisplayOptionInfo, ScaleaddonDisplayOptionNum, scaleaddonOptionsScreenOptionInfo, ScaleaddonScreenOptionNum))
        return FALSE;

    compAddMetadataFromFile (&scaleaddonOptionsMetadata, "scaleaddon");
    if (scaleaddonPluginVTable && scaleaddonPluginVTable->init)
        return scaleaddonPluginVTable->init (p);
    return TRUE;
}

static void scaleaddonOptionsFini (CompPlugin *p)
{
    if (scaleaddonPluginVTable && scaleaddonPluginVTable->fini)
        return scaleaddonPluginVTable->fini (p);

    if (displayPrivateIndex >= 0)
        freeDisplayPrivateIndex(displayPrivateIndex);

    compFiniMetadata (&scaleaddonOptionsMetadata);
}

static CompMetadata *
scaleaddonOptionsGetMetadata (CompPlugin *plugin)
{
    return &scaleaddonOptionsMetadata;
}

CompPluginVTable *getCompPluginInfo (void)
{
    if (!scaleaddonPluginVTable)
    {
        scaleaddonPluginVTable = scaleaddonOptionsGetCompPluginInfo ();
        memcpy(&scaleaddonOptionsVTable, scaleaddonPluginVTable, sizeof(CompPluginVTable));
        scaleaddonOptionsVTable.getMetadata = scaleaddonOptionsGetMetadata;
        scaleaddonOptionsVTable.init = scaleaddonOptionsInit;
        scaleaddonOptionsVTable.fini = scaleaddonOptionsFini;
        scaleaddonOptionsVTable.initDisplay = scaleaddonOptionsInitDisplay;
        scaleaddonOptionsVTable.finiDisplay = scaleaddonOptionsFiniDisplay;
        scaleaddonOptionsVTable.initScreen = scaleaddonOptionsInitScreen;
        scaleaddonOptionsVTable.finiScreen = scaleaddonOptionsFiniScreen;
        scaleaddonOptionsVTable.getDisplayOptions = scaleaddonOptionsGetDisplayOptions;
	scaleaddonOptionsVTable.setDisplayOption = scaleaddonOptionsSetDisplayOption;
	scaleaddonOptionsVTable.getScreenOptions = scaleaddonOptionsGetScreenOptions;
	scaleaddonOptionsVTable.setScreenOption = scaleaddonOptionsSetScreenOption;
	
    }
    return &scaleaddonOptionsVTable;
}



syntax highlighted by Code2HTML, v. 0.9.1