1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /* SLiM - Simple Login Manager
- Copyright (C) 2004-06 Simone Rota <sip@varlock.com>
- Copyright (C) 2004-06 Johannes Winkelmann <jw@tks6.net>
- Copyright (C) 2012 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
- This program 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; either version 2 of the License, or
- (at your option) any later version.
- The following code has been adapted and extended from
- xplanet 1.0.1, Copyright (C) 2002-04 Hari Nair <hari@alumni.caltech.edu>
- */
- #ifndef _IMAGE_H_
- #define _IMAGE_H_
- #include <X11/Xlib.h>
- #include <X11/Xmu/WinUtil.h>
- #include "log.h"
- class Image {
- public:
- Image();
- Image(const int w, const int h, const unsigned char *rgb,
- const unsigned char *alpha);
- ~Image();
- const unsigned char *getPNGAlpha() const {
- return(png_alpha);
- };
- const unsigned char *getRGBData() const {
- return(rgb_data);
- };
- void getPixel(double px, double py, unsigned char *pixel);
- void getPixel(double px, double py, unsigned char *pixel,
- unsigned char *alpha);
- int Width() const {
- return(width);
- };
- int Height() const {
- return(height);
- };
- void Quality(const int q) {
- quality_ = q;
- };
- bool Read(const char *filename);
- void Reduce(const int factor);
- void Resize(const int w, const int h);
- void Merge(Image *background, const int x, const int y);
- void Merge_non_crop(Image* background, const int x, const int y);
- void Crop(const int x, const int y, const int w, const int h);
- void Tile(const int w, const int h);
- void Center(const int w, const int h, const char *hex);
- void Plain(const int w, const int h, const char *hex);
- void computeShift(unsigned long mask, unsigned char &left_shift,
- unsigned char &right_shift);
- Pixmap createPixmap(Display *dpy, int scr, Window win);
- private:
- int width, height, area;
- unsigned char *rgb_data;
- unsigned char *png_alpha;
- int quality_;
- int readJpeg(const char *filename, int *width, int *height,
- unsigned char **rgb);
- int readPng(const char *filename, int *width, int *height,
- unsigned char **rgb, unsigned char **alpha);
- };
- #endif /* _IMAGE_H_ */
|