mirror of
https://github.com/edeproject/ede.git
synced 2023-08-10 21:13:03 +03:00
Changes in build scripts
Changed SharedLibrary rule so it can generate .la files, like libtool Added some bluring of preview image, although it pretty sucks emountd will now use global HAL flags and libraries
This commit is contained in:
80
ede-desktop-conf/BoxBlur.cpp
Normal file
80
ede-desktop-conf/BoxBlur.cpp
Normal file
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Desktop configuration tool
|
||||
* Part of Equinox Desktop Environment (EDE).
|
||||
* Copyright (c) 2009 EDE Authors.
|
||||
*
|
||||
* This program is licensed under terms of the
|
||||
* GNU General Public License version 2 or newer.
|
||||
* See COPYING for details.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <FL/Fl_RGB_Image.H>
|
||||
#include "BoxBlur.h"
|
||||
|
||||
typedef unsigned char uchar;
|
||||
typedef unsigned int uint;
|
||||
|
||||
static int pixel_address(int x, int y, int w) {
|
||||
return y * w + x;
|
||||
}
|
||||
|
||||
static uint get_pixel(uint* data, int x, int y, int w) {
|
||||
int p = pixel_address(x, y, w);
|
||||
if(p < 0)
|
||||
p = 0;
|
||||
if(p > w - 1)
|
||||
p = w - 1;
|
||||
return data[p];
|
||||
}
|
||||
|
||||
Fl_RGB_Image* box_blur(Fl_RGB_Image* src) {
|
||||
int radius = 4;
|
||||
|
||||
uint* orig = (uint*)src->data()[0];
|
||||
uchar* buf = new uchar[src->w() * src->h() * src->d()];
|
||||
memcpy(buf, src->array, src->w() * src->h() * src->d());
|
||||
uint* bufptr = (uint*)buf;
|
||||
|
||||
for(int x = 4; x < src->w() - 1; x++) {
|
||||
for(int y = 4; y < src->h() - 1; y+= src->d()) {
|
||||
int count = 0;
|
||||
uint rsum = 0, gsum = 0, bsum = 0, asum = 0;
|
||||
|
||||
for(int nx = x - radius; nx < x + radius; nx++) {
|
||||
for(int ny = y - radius; ny < y + radius; ny++) {
|
||||
/* get pixel from x,y */
|
||||
uint pix = get_pixel(bufptr, nx, ny, src->w()/src->d());
|
||||
uchar* ptr = (uchar*)&pix;
|
||||
|
||||
rsum += *ptr++;
|
||||
gsum += *ptr++;
|
||||
bsum += *ptr++;
|
||||
asum += *ptr;
|
||||
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* set pixel at x,y */
|
||||
uint tmp;
|
||||
uchar *tc = (uchar*)&tmp;
|
||||
*tc++ = rsum / count;
|
||||
*tc++ = gsum / count;
|
||||
*tc++ = bsum / count;
|
||||
*tc = asum / count;
|
||||
|
||||
bufptr[pixel_address(x, y, src->w()/src->d())] = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
if(src->alloc_array)
|
||||
delete [] (uchar*)src->array;
|
||||
src->array = buf;
|
||||
src->alloc_array = 1;
|
||||
|
||||
return src;
|
||||
}
|
20
ede-desktop-conf/BoxBlur.h
Normal file
20
ede-desktop-conf/BoxBlur.h
Normal file
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Desktop configuration tool
|
||||
* Part of Equinox Desktop Environment (EDE).
|
||||
* Copyright (c) 2009 EDE Authors.
|
||||
*
|
||||
* This program is licensed under terms of the
|
||||
* GNU General Public License version 2 or newer.
|
||||
* See COPYING for details.
|
||||
*/
|
||||
|
||||
#ifndef __BOXBLUR_H__
|
||||
#define __BOXBLUR_H__
|
||||
|
||||
class Fl_RGB_Image;
|
||||
|
||||
Fl_RGB_Image* box_blur(Fl_RGB_Image* src);
|
||||
|
||||
#endif
|
@@ -10,7 +10,7 @@
|
||||
|
||||
SubDir TOP ede-desktop-conf ;
|
||||
|
||||
SOURCE = ede-desktop-conf.cpp ;
|
||||
SOURCE = ede-desktop-conf.cpp BoxBlur.cpp ;
|
||||
|
||||
EdeProgram ede-desktop-conf : $(SOURCE) ;
|
||||
TranslationStrings locale : $(SOURCE) ;
|
||||
|
@@ -42,6 +42,8 @@
|
||||
#include <edelib/FontChooser.h>
|
||||
#include <edelib/Directory.h>
|
||||
|
||||
#include "BoxBlur.h"
|
||||
|
||||
#define EDE_DESKTOP_UID 0x10
|
||||
#define EDE_DESKTOP_CONFIG "ede/ede-desktop"
|
||||
|
||||
@@ -128,6 +130,7 @@ void set_wallpaper(const char* path) {
|
||||
case IMG_STRETCH: {
|
||||
Fl_Image* transformed = rel_img->copy(area_w, area_h);
|
||||
wallpaper_img->size(area_w, area_h);
|
||||
transformed = (Fl_RGB_Image*)box_blur((Fl_RGB_Image*)transformed);
|
||||
wallpaper_img->image(transformed);
|
||||
break;
|
||||
}
|
||||
@@ -276,7 +279,7 @@ void ok_cb(Fl_Widget*, void* w) {
|
||||
edelib::Window* win = (edelib::Window*)w;
|
||||
apply_cb(0, win);
|
||||
/* a hack so ede-desktop-conf can send a message before it was closed */
|
||||
sleep(1);
|
||||
usleep(120000);
|
||||
win->hide();
|
||||
}
|
||||
|
||||
@@ -373,11 +376,13 @@ int main(int argc, char** argv) {
|
||||
g1->hide();
|
||||
|
||||
g1->begin();
|
||||
/*
|
||||
Fl_Box* b1 = new Fl_Box(85, 196, 100, 15);
|
||||
b1->box(FL_BORDER_BOX);
|
||||
|
||||
Fl_Box* b2 = new Fl_Box(30, 43, 210, 158);
|
||||
b2->box(FL_THIN_UP_BOX);
|
||||
*/
|
||||
|
||||
/* box size is intentionaly odd so preserve aspect ratio */
|
||||
wallpaper = new Fl_Box(43, 53, 184, 138);
|
||||
@@ -392,8 +397,10 @@ int main(int argc, char** argv) {
|
||||
wallpaper_img->box(FL_NO_BOX);
|
||||
wallpaper_img->align(FL_ALIGN_CLIP);
|
||||
|
||||
/*
|
||||
Fl_Box* b4 = new Fl_Box(60, 206, 145, 14);
|
||||
b4->box(FL_THIN_UP_BOX);
|
||||
*/
|
||||
|
||||
desk_background = new Fl_Input(295, 80, 190, 25, _("Image:"));
|
||||
|
||||
@@ -471,6 +478,6 @@ int main(int argc, char** argv) {
|
||||
|
||||
win->init(edelib::WIN_INIT_IMAGES);
|
||||
load_settings();
|
||||
win->show();
|
||||
win->show(argc, argv);
|
||||
return Fl::run();
|
||||
}
|
||||
|
Reference in New Issue
Block a user