ImageAdjustments.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include "ImageAdjustments.h"
  2. #include "ImageData.h"
  3. #include "PSDReader.h"
  4. #include "ImageUtils.h"
  5. #include "ImgEffects.h"
  6. USING_NS_BF;
  7. ImageAdjustment::~ImageAdjustment()
  8. {
  9. }
  10. void ImageAdjustment::ApplyImageAdjustment(PSDLayerInfo* layerInfo, ImageData* image)
  11. {
  12. }
  13. ImageData* ImageAdjustment::CreateAdjustedImage(PSDLayerInfo* layerInfo, ImageData* destImage)
  14. {
  15. ImageData* newImage = destImage->Duplicate();
  16. ApplyImageAdjustment(layerInfo, newImage);
  17. CrossfadeImage(destImage, newImage, layerInfo->mFillOpacity / 255.0f);
  18. return newImage;
  19. }
  20. void InvertImageAdjustement::ApplyImageAdjustment(PSDLayerInfo* layerInfo, ImageData* image)
  21. {
  22. int size = image->mWidth*image->mHeight;
  23. for (int i = 0; i < size; i++)
  24. {
  25. image->mBits[i] =
  26. (image->mBits[i] & 0xFF000000) |
  27. ((0xFFFFFFFF - image->mBits[i]) & 0x00FFFFFF);
  28. }
  29. }
  30. void SolidColorImageAdjustement::ApplyImageAdjustment(PSDLayerInfo* layerInfo, ImageData* image)
  31. {
  32. int size = image->mWidth*image->mHeight;
  33. for (int i = 0; i < size; i++)
  34. image->mBits[i] = mColor;
  35. }
  36. GradientImageAdjustement::~GradientImageAdjustement()
  37. {
  38. delete mFill;
  39. }
  40. void GradientImageAdjustement::ApplyImageAdjustment(PSDLayerInfo* layerInfo, ImageData* image)
  41. {
  42. mFill->Apply(layerInfo, image, image);
  43. }
  44. PatternImageAdjustement::~PatternImageAdjustement()
  45. {
  46. delete mFill;
  47. }
  48. void PatternImageAdjustement::ApplyImageAdjustment(PSDLayerInfo* layerInfo, ImageData* image)
  49. {
  50. mFill->Apply(layerInfo, image, image);
  51. }
  52. void BrightnessContrastImageAdjustment::ApplyImageAdjustment(PSDLayerInfo* layerInfo, ImageData* image)
  53. {
  54. int size = image->mWidth*image->mHeight;
  55. for (int i = 0; i < size; i++)
  56. {
  57. PackedColor* color = (PackedColor*) (&image->mBits[i]);
  58. //int effect = 256 - (int) (pow(abs(color->r - mMeanValue)/127.0, 2.0)*127);
  59. //color->r = BFClamp(color->r + effect*mBrightness/256, 0, 255);
  60. color->r = (int) (pow(color->r / 255.0f, 1.0f - mBrightness/200.0f) * 255);
  61. image->mBits[i] = *((uint32*) color);
  62. }
  63. }