#ifndef YAWA_H
#define YAWA_H
/*
* yawa - Yet Another Wallpaper Application
* Copyright (C) 2014, The YAWA Developers
*
* This file is part of yawa. yawa is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, version 2.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#include
#include
#include "config.h"
typedef struct
{
signed r, g, b, a;
} Color;
typedef enum
{
Full, Fill, Center, Tile
} ImageMode;
/// Prototypes
signed
set_root_atoms(Pixmap pixmap);
signed
load_image(ImageMode mode, const char *arg, signed rootW, signed rootH,
signed alpha, Imlib_Image rootimg);
/// Argument parsing
static signed num_add_colors = 0;
static signed num_distances = 0;
struct arguments {
char add_color[8][8];
signed distance[8];
char *image, *write_file,
*solid_color, *tint_color;
double contrast_amount, brightness_amount;
double gamma_amount;
signed angle;
unsigned blur_radius;
unsigned sharpen_radius;
unsigned alpha_amount;
bool add;
bool gradient;
bool clear;
bool solid;
bool center;
bool tile;
bool full: 4;
bool fill: 1;
bool tint: 1;
bool blur: 1;
bool sharpen: 1;
bool contrast: 1;
bool brightness: 1;
bool gamma: 1;
bool flipv: 1;
bool fliph: 1;
bool flipd: 1;
bool alpha: 1;
bool write: 1;
};
// Order of fields: {NAME, KEY, ARG, FLAGS, DOC, GROUP}.
static struct argp_option options[] = {
{0, 0, 0, 0, "Gradients:", 1},
{"add", 'a', "COLOR", 0, "Add color to range", 1},
{"distance", 'd', "DISTANCE", 0, "Distance to use for adding color to range. "
"Defaults to 1 for each color", 1},
{"gradient", 'g', "ANGLE", 0, "Render gradient using specified angle", 1},
{"clear", 'c', 0, 0, "Clear the color range", 1},
{0, 0, 0, 0, "Solid:", 2},
{"solid", 's', "COLOR", 0, "Render a solid using the specified color", 2},
{0, 0, 0, 0, "Image files:", 3},
{"center", 'C', "IMAGE", 0, "Render an image centered on the screen", 3},
{"tile", 't', "IMAGE", 0, "Render an image tiled", 3},
{"full", 'f', "IMAGE", 0, "Render an image maximum aspect", 3},
{"fill", 'F', "IMAGE", 0, "Render an image stretched", 3},
{0, 0, 0, 0, "Manipulations:", 4},
{"tint", 'T', "COLOR", 0, "Tint current image", 4},
{"blur", 'b', "RADIUS", 0, "Blur the current image", 4},
{"sharpen", 'S', "RADIUS", 0, "Sharpen the current image", 4},
{"contrast", 'o', "AMOUNT", 0, "Adjust the contrast of the current image", 4},
{"brightness", 'B', "AMOUNT", 0, "Adjust the bightness of the current image", 4},
{"gamma", 'G', "AMOUNT", 0, "Adjust the gamma level of the current image", 4},
{"flipv", 1, 0, 0, "Flip the current image vertically", 4},
{"fliph", 2, 0, 0, "Flip the current image horizontally", 4},
{"flipd", 3, 0, 0, "Flip the current image diagonally", 4},
{0, 0, 0, 0, "Misc:", -1},
{"alpha", 'A', "AMOUNT", 0, "Adjust alpha level for colors and images", -1},
{"write", 'w', "FILENAME", 0, "Write the current image to a file", -1},
{0, 0, 0, 0, 0, 0}
};
#endif