00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <string.h>
00013 #include "win_theme.h"
00014 #include "win_background.h"
00015
00016 win_background::win_background()
00017 {
00018 wb_=NULL;
00019
00020 init();
00021
00022 set_visible_background(false);
00023
00024 set_brightness_background(false);
00025
00026 set_trans_background(true);
00027 }
00028
00029
00030 win_background::win_background(win_base * wb)
00031 {
00032 wb_=wb;
00033
00034 init();
00035
00036 set_visible_background(false);
00037
00038 set_brightness_background(false);
00039
00040 set_trans_background(true);
00041 }
00042
00043
00044 win_background::win_background(char *rep)
00045 {
00046 wb_=NULL;
00047
00048 init();
00049
00050 set_visible_background(false);
00051
00052 set_brightness_background(false);
00053
00054 set_trans_background(true);
00055
00056 win_background::load(rep);
00057
00058 refresh();
00059 }
00060
00061
00062 win_background::win_background(win_background & wb)
00063 {
00064 wb_=NULL;
00065
00066 init();
00067
00068 set_visible_background(false);
00069
00070 set_brightness_background(false);
00071
00072 set_trans_background(true);
00073
00074 *this=wb;
00075
00076 refresh();
00077 }
00078
00079
00080 win_background::~win_background()
00081 {
00082 destroy();
00083 }
00084
00085
00086 void win_background::destroy()
00087 {
00088 if(background_template_) delete background_template_;
00089 if(background_) delete background_;
00090 if(background_brightness_) delete background_brightness_;
00091 init();
00092 }
00093
00094
00095 void win_background::init()
00096 {
00097 background_template_=NULL;
00098 background_=NULL;
00099 background_brightness_=NULL;
00100 background_draw_=NULL;
00101 }
00102
00103
00104 win_background & win_background::operator=(win_background & wb)
00105 {
00106 destroy();
00107 background_template_=new image();
00108 *background_template_=*(wb.background_template_);
00109 background_=new image();
00110 background_->set_mask(false);
00111 background_brightness_= new image();
00112 background_brightness_->set_mask(true);
00113
00114 update();
00115
00116 return *this;
00117
00118 }
00119
00120
00121 void win_background::set_background(win_background & wb)
00122 {
00123 *this=wb;
00124 refresh();
00125 }
00126
00127 void win_background::set_background(win_theme & wt)
00128 {
00129 *this=*(wt.background);
00130 refresh();
00131 }
00132
00133 void win_background::set_brightness_background(bool b)
00134 {
00135 brightness_=b;
00136 refresh();
00137 }
00138
00139 void win_background::refresh()
00140 {
00141 background_draw_=(brightness_)? background_brightness_ : background_ ;
00142 }
00143
00144 void win_background::load(char *rep)
00145 {
00146 destroy();
00147 char path[255];
00148 strcpy(path,WIN_DIRECTORY);
00149 strcat(path,WIN_BACKGROUND_DIRECTORY);
00150 strcat(path,rep);
00151 strcat(path,WIN_BACKGROUND_FILE);
00152 background_template_=new image();
00153 background_template_->load_pnm(path);
00154
00155 background_=new image();
00156 background_->set_mask(true);
00157
00158 background_brightness_=new image();
00159 background_brightness_->set_mask(true);
00160 }
00161
00162
00163 void win_background::update()
00164 {
00165 if(!background_template_) return ;
00166
00167 background_->resize(wb_->length(),wb_->height());
00168 background_->tile(*background_template_);
00169 background_brightness_->brightness(*background_,WIN_BRIGHTNESS_LEVEL);
00170 }
00171
00172
00173 void win_background::draw(drawing_area * da)
00174 {
00175 if(!visible_ || !background_draw_ || !wb_) return;
00176 background_draw_->draw(wb_->real_x(),wb_->real_y(),da);
00177 }
00178
00179
00180 void win_background::set_trans_background(bool b)
00181 {
00182 if(!background_template_) return;
00183 if(b)
00184 {
00185 background_->set_alpha(130);
00186 background_brightness_->set_alpha(130);
00187 }
00188 else
00189 {
00190 background_->set_alpha(255);
00191 background_brightness_->set_alpha(255);
00192 }
00193 }
00194
00195
00196
00197
00198
00199
00200
00201