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:
Sanel Zukan
2009-01-26 12:31:01 +00:00
parent 85aee53848
commit 5155215b68
10 changed files with 244 additions and 100 deletions

View 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;
}

View 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

View File

@@ -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) ;

View File

@@ -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();
}