/*
* 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 _SHOWDESKTOP_OPTIONS_INTERNAL
#include "showdesktop_options.h"
static int displayPrivateIndex;
static CompMetadata showdesktopOptionsMetadata;
static CompPluginVTable *showdesktopPluginVTable = NULL;
CompPluginVTable showdesktopOptionsVTable;
#define GET_SHOWDESKTOP_OPTIONS_DISPLAY(d) \
((ShowdesktopOptionsDisplay *) (d)->privates[displayPrivateIndex].ptr)
#define SHOWDESKTOP_OPTIONS_DISPLAY(d) \
ShowdesktopOptionsDisplay *od = GET_SHOWDESKTOP_OPTIONS_DISPLAY (d)
#define GET_SHOWDESKTOP_OPTIONS_SCREEN(s, od) \
((ShowdesktopOptionsScreen *) (s)->privates[(od)->screenPrivateIndex].ptr)
#define SHOWDESKTOP_OPTIONS_SCREEN(s) \
ShowdesktopOptionsScreen *os = GET_SHOWDESKTOP_OPTIONS_SCREEN (s, GET_SHOWDESKTOP_OPTIONS_DISPLAY (s->display))
typedef struct _ShowdesktopOptionsDisplay
{
int screenPrivateIndex;
} ShowdesktopOptionsDisplay;
typedef struct _ShowdesktopOptionsScreen
{
CompOption opt[ShowdesktopScreenOptionNum];
showdesktopScreenOptionChangeNotifyProc notify[ShowdesktopScreenOptionNum];
} ShowdesktopOptionsScreen;
float showdesktopGetSpeed (CompScreen *s)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return os->opt[ShowdesktopScreenOptionSpeed].value.f;
}
CompOption * showdesktopGetSpeedOption (CompScreen *s)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return &os->opt[ShowdesktopScreenOptionSpeed];
}
void showdesktopSetSpeedNotify (CompScreen *s, showdesktopScreenOptionChangeNotifyProc notify)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
os->notify[ShowdesktopScreenOptionSpeed] = notify;
}
float showdesktopGetTimestep (CompScreen *s)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return os->opt[ShowdesktopScreenOptionTimestep].value.f;
}
CompOption * showdesktopGetTimestepOption (CompScreen *s)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return &os->opt[ShowdesktopScreenOptionTimestep];
}
void showdesktopSetTimestepNotify (CompScreen *s, showdesktopScreenOptionChangeNotifyProc notify)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
os->notify[ShowdesktopScreenOptionTimestep] = notify;
}
int showdesktopGetDirection (CompScreen *s)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return os->opt[ShowdesktopScreenOptionDirection].value.i;
}
CompOption * showdesktopGetDirectionOption (CompScreen *s)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return &os->opt[ShowdesktopScreenOptionDirection];
}
void showdesktopSetDirectionNotify (CompScreen *s, showdesktopScreenOptionChangeNotifyProc notify)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
os->notify[ShowdesktopScreenOptionDirection] = notify;
}
CompMatch * showdesktopGetWindowMatch (CompScreen *s)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return &os->opt[ShowdesktopScreenOptionWindowMatch].value.match;
}
CompOption * showdesktopGetWindowMatchOption (CompScreen *s)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return &os->opt[ShowdesktopScreenOptionWindowMatch];
}
void showdesktopSetWindowMatchNotify (CompScreen *s, showdesktopScreenOptionChangeNotifyProc notify)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
os->notify[ShowdesktopScreenOptionWindowMatch] = notify;
}
float showdesktopGetWindowOpacity (CompScreen *s)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return os->opt[ShowdesktopScreenOptionWindowOpacity].value.f;
}
CompOption * showdesktopGetWindowOpacityOption (CompScreen *s)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return &os->opt[ShowdesktopScreenOptionWindowOpacity];
}
void showdesktopSetWindowOpacityNotify (CompScreen *s, showdesktopScreenOptionChangeNotifyProc notify)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
os->notify[ShowdesktopScreenOptionWindowOpacity] = notify;
}
int showdesktopGetWindowPartSize (CompScreen *s)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return os->opt[ShowdesktopScreenOptionWindowPartSize].value.i;
}
CompOption * showdesktopGetWindowPartSizeOption (CompScreen *s)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return &os->opt[ShowdesktopScreenOptionWindowPartSize];
}
void showdesktopSetWindowPartSizeNotify (CompScreen *s, showdesktopScreenOptionChangeNotifyProc notify)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
os->notify[ShowdesktopScreenOptionWindowPartSize] = notify;
}
CompOption * showdesktopGetScreenOption (CompScreen *s, ShowdesktopScreenOptions num)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
return &os->opt[num];
}
static const CompMetadataOptionInfo showdesktopOptionsScreenOptionInfo[] = {
{ "speed", "float", "<min>0.1</min><max>50.0</max>", 0, 0 },
{ "timestep", "float", "<min>0.1</min><max>50.0</max>", 0, 0 },
{ "direction", "int", "<min>0</min><max>6</max>", 0, 0 },
{ "window_match", "match", 0, 0, 0 },
{ "window_opacity", "float", "<min>0.1</min><max>1.0</max>", 0, 0 },
{ "window_part_size", "int", "<min>0</min><max>300</max>", 0, 0 },
};
static Bool showdesktopOptionsSetScreenOption (CompPlugin *plugin, CompScreen *s, char *name, CompOptionValue *value)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
CompOption *o;
int index;
o = compFindOption (os->opt, ShowdesktopScreenOptionNum, name, &index);
if (!o)
return FALSE;
switch (index)
{
case ShowdesktopScreenOptionSpeed:
if (compSetScreenOption (s, o, value))
{
if (os->notify[ShowdesktopScreenOptionSpeed])
(*os->notify[ShowdesktopScreenOptionSpeed]) (s, o, ShowdesktopScreenOptionSpeed);
return TRUE;
}
break;
case ShowdesktopScreenOptionTimestep:
if (compSetScreenOption (s, o, value))
{
if (os->notify[ShowdesktopScreenOptionTimestep])
(*os->notify[ShowdesktopScreenOptionTimestep]) (s, o, ShowdesktopScreenOptionTimestep);
return TRUE;
}
break;
case ShowdesktopScreenOptionDirection:
if (compSetScreenOption (s, o, value))
{
if (os->notify[ShowdesktopScreenOptionDirection])
(*os->notify[ShowdesktopScreenOptionDirection]) (s, o, ShowdesktopScreenOptionDirection);
return TRUE;
}
break;
case ShowdesktopScreenOptionWindowMatch:
if (compSetScreenOption (s, o, value))
{
if (os->notify[ShowdesktopScreenOptionWindowMatch])
(*os->notify[ShowdesktopScreenOptionWindowMatch]) (s, o, ShowdesktopScreenOptionWindowMatch);
return TRUE;
}
break;
case ShowdesktopScreenOptionWindowOpacity:
if (compSetScreenOption (s, o, value))
{
if (os->notify[ShowdesktopScreenOptionWindowOpacity])
(*os->notify[ShowdesktopScreenOptionWindowOpacity]) (s, o, ShowdesktopScreenOptionWindowOpacity);
return TRUE;
}
break;
case ShowdesktopScreenOptionWindowPartSize:
if (compSetScreenOption (s, o, value))
{
if (os->notify[ShowdesktopScreenOptionWindowPartSize])
(*os->notify[ShowdesktopScreenOptionWindowPartSize]) (s, o, ShowdesktopScreenOptionWindowPartSize);
return TRUE;
}
break;
default:
break;
}
return FALSE;
}
static CompOption * showdesktopOptionsGetScreenOptions (CompPlugin *plugin, CompScreen *s, int *count)
{
SHOWDESKTOP_OPTIONS_SCREEN(s);
*count = ShowdesktopScreenOptionNum;
return os->opt;
}
static Bool showdesktopOptionsInitScreen (CompPlugin *p, CompScreen *s)
{
ShowdesktopOptionsScreen *os;
SHOWDESKTOP_OPTIONS_DISPLAY (s->display);
os = calloc (1, sizeof(ShowdesktopOptionsScreen));
if (!os)
return FALSE;
s->privates[od->screenPrivateIndex].ptr = os;
if (!compInitScreenOptionsFromMetadata (s, &showdesktopOptionsMetadata, showdesktopOptionsScreenOptionInfo, os->opt, ShowdesktopScreenOptionNum))
{
free (os);
return FALSE;
}
if (showdesktopPluginVTable && showdesktopPluginVTable->initScreen)
return showdesktopPluginVTable->initScreen (p, s);
return TRUE;
}
static void showdesktopOptionsFiniScreen (CompPlugin *p, CompScreen *s)
{
if (showdesktopPluginVTable && showdesktopPluginVTable->finiScreen)
return showdesktopPluginVTable->finiScreen (p, s);
SHOWDESKTOP_OPTIONS_SCREEN (s);
compFiniScreenOptions (s, os->opt, ShowdesktopScreenOptionNum);
free (os);
}
static Bool showdesktopOptionsInitDisplay (CompPlugin *p, CompDisplay *d)
{
ShowdesktopOptionsDisplay *od;
od = calloc (1, sizeof(ShowdesktopOptionsDisplay));
if (!od)
return FALSE;
od->screenPrivateIndex = allocateScreenPrivateIndex(d);
if (od->screenPrivateIndex < 0)
{
free(od);
return FALSE;
}
d->privates[displayPrivateIndex].ptr = od;
if (showdesktopPluginVTable && showdesktopPluginVTable->initDisplay)
return showdesktopPluginVTable->initDisplay (p, d);
return TRUE;
}
static void showdesktopOptionsFiniDisplay (CompPlugin *p, CompDisplay *d)
{
if (showdesktopPluginVTable && showdesktopPluginVTable->finiDisplay)
return showdesktopPluginVTable->finiDisplay (p, d);
SHOWDESKTOP_OPTIONS_DISPLAY (d);
freeScreenPrivateIndex(d, od->screenPrivateIndex);
free (od);
}
static Bool showdesktopOptionsInit (CompPlugin *p)
{
displayPrivateIndex = allocateDisplayPrivateIndex();
if (displayPrivateIndex < 0)
return FALSE;
if (!compInitPluginMetadataFromInfo (&showdesktopOptionsMetadata, "showdesktop",0, 0, showdesktopOptionsScreenOptionInfo, ShowdesktopScreenOptionNum))
return FALSE;
compAddMetadataFromFile (&showdesktopOptionsMetadata, "showdesktop");
if (showdesktopPluginVTable && showdesktopPluginVTable->init)
return showdesktopPluginVTable->init (p);
return TRUE;
}
static void showdesktopOptionsFini (CompPlugin *p)
{
if (showdesktopPluginVTable && showdesktopPluginVTable->fini)
return showdesktopPluginVTable->fini (p);
if (displayPrivateIndex >= 0)
freeDisplayPrivateIndex(displayPrivateIndex);
compFiniMetadata (&showdesktopOptionsMetadata);
}
static CompMetadata *
showdesktopOptionsGetMetadata (CompPlugin *plugin)
{
return &showdesktopOptionsMetadata;
}
CompPluginVTable *getCompPluginInfo (void)
{
if (!showdesktopPluginVTable)
{
showdesktopPluginVTable = showdesktopOptionsGetCompPluginInfo ();
memcpy(&showdesktopOptionsVTable, showdesktopPluginVTable, sizeof(CompPluginVTable));
showdesktopOptionsVTable.getMetadata = showdesktopOptionsGetMetadata;
showdesktopOptionsVTable.init = showdesktopOptionsInit;
showdesktopOptionsVTable.fini = showdesktopOptionsFini;
showdesktopOptionsVTable.initDisplay = showdesktopOptionsInitDisplay;
showdesktopOptionsVTable.finiDisplay = showdesktopOptionsFiniDisplay;
showdesktopOptionsVTable.initScreen = showdesktopOptionsInitScreen;
showdesktopOptionsVTable.finiScreen = showdesktopOptionsFiniScreen;
showdesktopOptionsVTable.getScreenOptions = showdesktopOptionsGetScreenOptions;
showdesktopOptionsVTable.setScreenOption = showdesktopOptionsSetScreenOption;
}
return &showdesktopOptionsVTable;
}
syntax highlighted by Code2HTML, v. 0.9.1