Ticket #6511: mythui.intensity.2.patch
File mythui.intensity.2.patch, 6.1 KB (added by , 16 years ago) |
---|
-
mythtv/libs/libmythui/mythimage.cpp
28 28 m_gradDirection = FillTopToBottom; 29 29 30 30 m_isReflected = false; 31 m_setIntensity = false; 31 32 32 33 m_imageId = 0; 33 34 … … 221 222 } 222 223 } 223 224 225 void MythImage::Intensity(float percent) 226 { 227 if (m_setIntensity) 228 return; 229 230 int segColors = depth() > 8 ? 256 : numColors(); 231 int pixels = depth() > 8 ? width()*height() : 232 numColors(); 233 unsigned int *data = depth() > 8 ? (unsigned int *)bits() : 234 (unsigned int *)colorTable().data(); 235 236 bool brighten = (percent >= 0); 237 if(percent < 0) 238 percent = -percent; 239 240 unsigned char *segTbl = new unsigned char[segColors]; 241 int tmp; 242 if(brighten) 243 { 244 for(int i=0; i < segColors; ++i) 245 { 246 tmp = (int)(i*percent); 247 if(tmp > 255) 248 tmp = 255; 249 segTbl[i] = tmp; 250 } 251 } 252 else 253 { 254 for(int i=0; i < segColors; ++i) 255 { 256 tmp = (int)(i*percent); 257 if(tmp < 0) 258 tmp = 0; 259 segTbl[i] = tmp; 260 } 261 } 262 263 if(brighten) 264 { 265 for(int i=0; i < pixels; ++i) 266 { 267 int r = qRed(data[i]); 268 int g = qGreen(data[i]); 269 int b = qBlue(data[i]); 270 int a = qAlpha(data[i]); 271 r = r + segTbl[r] > 255 ? 255 : r + segTbl[r]; 272 g = g + segTbl[g] > 255 ? 255 : g + segTbl[g]; 273 b = b + segTbl[b] > 255 ? 255 : b + segTbl[b]; 274 data[i] = qRgba(r, g, b, a); 275 } 276 } 277 else 278 { 279 for(int i=0; i < pixels; ++i) 280 { 281 int r = qRed(data[i]); 282 int g = qGreen(data[i]); 283 int b = qBlue(data[i]); 284 int a = qAlpha(data[i]); 285 r = r - segTbl[r] < 0 ? 0 : r - segTbl[r]; 286 g = g - segTbl[g] < 0 ? 0 : g - segTbl[g]; 287 b = b - segTbl[b] < 0 ? 0 : b - segTbl[b]; 288 data[i] = qRgba(r, g, b, a); 289 } 290 } 291 delete [] segTbl; 292 293 m_setIntensity = true; 294 } 295 296 224 297 MythImage *MythImage::FromQImage(QImage **img) 225 298 { 226 299 if (!img || !*img) -
mythtv/libs/libmythui/mythimage.h
28 28 29 29 bool IsGradient() const { return m_isGradient; } 30 30 bool IsReflected() const { return m_isReflected; } 31 bool HasIntensity() const { return m_setIntensity; } 31 32 32 33 void Assign(const QImage &img); 33 34 void Assign(const QPixmap &pix); … … 41 42 void Reflect(ReflectAxis axis, int shear, int scale, int length, 42 43 int spacing = 0); 43 44 void ToGreyscale(); 45 void Intensity(float percent); 44 46 45 47 /** 46 48 * @brief Create a gradient image. … … 60 62 QString GetFileName(void) const { return m_FileName; } 61 63 62 64 void setIsReflected(bool reflected) { m_isReflected = reflected; } 65 void setHasIntensity(bool intensity) { m_setIntensity = intensity; } 63 66 64 67 void SetIsInCache(bool bCached); 65 68 … … 83 86 FillDirection m_gradDirection; 84 87 85 88 bool m_isReflected; 89 bool m_setIntensity; 86 90 87 91 unsigned int m_imageId; 88 92 -
mythtv/libs/libmythui/mythuiimage.cpp
113 113 114 114 m_isGreyscale = false; 115 115 116 m_hasIntensity = false; 117 m_intensity = 0; 118 116 119 m_preserveAspect = false; 117 120 } 118 121 … … 187 190 if (m_isGreyscale && !img->isGrayscale()) 188 191 img->ToGreyscale(); 189 192 193 if (m_hasIntensity && !img->HasIntensity()) 194 img->Intensity(m_intensity); 195 190 196 if (m_ForceSize.isNull()) 191 197 SetSize(img->size()); 192 198 … … 234 240 if (m_isGreyscale && !im->isGrayscale()) 235 241 im->ToGreyscale(); 236 242 243 if (m_hasIntensity && !im->HasIntensity()) 244 im->Intensity(m_intensity); 245 237 246 m_Images.push_back(im); 238 247 239 248 aSize = aSize.expandedTo(im->size()); … … 326 335 if (m_isGreyscale) 327 336 s_Attrib += "greyscale"; 328 337 338 if (m_hasIntensity) 339 s_Attrib += "intensity"; 340 329 341 imagelabel = QString("%1-%2-%3x%4.png") 330 342 .arg(filename) 331 343 .arg(s_Attrib) … … 414 426 VERBOSE(VB_FILE, QString("MythUIImage::Load found in cache :%1:").arg(imagelabel)); 415 427 if (m_isReflected) 416 428 image->setIsReflected(true); 429 if (m_hasIntensity) 430 image->setHasIntensity(true); 417 431 418 432 bFoundInCache = true; 419 433 } … … 467 481 if (m_isGreyscale) 468 482 image->ToGreyscale(); 469 483 484 if (m_hasIntensity) 485 image->Intensity(m_intensity); 486 470 487 // Save scaled copy to cache 471 488 if (bNeedLoad) 472 489 GetMythUI()->CacheImage(imagelabel, image); … … 675 692 { 676 693 m_isGreyscale = parseBool(element); 677 694 } 695 else if (element.tagName() == "intensity") 696 { 697 m_hasIntensity = true; 698 m_intensity = (getFirstText(element).toFloat() / 100); 699 } 678 700 else 679 701 return MythUIType::ParseElement(element); 680 702 … … 733 755 734 756 m_isGreyscale = im->m_isGreyscale; 735 757 758 m_hasIntensity = im->m_hasIntensity; 759 m_intensity = im->m_intensity; 760 736 761 //SetImages(im->m_Images); 737 762 738 763 MythUIType::CopyFrom(base); -
mythtv/libs/libmythui/mythuiimage.h
99 99 bool m_preserveAspect; 100 100 101 101 bool m_isGreyscale; 102 bool m_hasIntensity; 102 103 104 float m_intensity; 105 103 106 friend class MythThemeBase; 104 107 friend class MythUIButtonListItem; 105 108 friend class MythUIProgressBar;