ImageScaled.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /*
  2. * ImageScaled.cpp, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #include "StdInc.h"
  11. #include "ImageScaled.h"
  12. #include "SDLImage.h"
  13. #include "SDL_Extensions.h"
  14. #include "../../lib/constants/EntityIdentifiers.h"
  15. #include <SDL_surface.h>
  16. ImageSharedScaled::ImageSharedScaled(std::shared_ptr<SDLImageShared> sourceImage)
  17. :sourceImage(sourceImage)
  18. {
  19. scaledImage = sourceImage->scaleFast(sourceImage->dimensions() * getScalingFactor());
  20. }
  21. int ImageSharedScaled::getScalingFactor() const
  22. {
  23. return 2;
  24. }
  25. void ImageSharedScaled::draw(SDL_Surface *where, const Point &dest, const Rect *src, uint8_t alpha, EImageBlitMode mode) const
  26. {
  27. scaledImage->draw(where, nullptr, dest, src, alpha, mode);
  28. }
  29. void ImageSharedScaled::exportBitmap(const boost::filesystem::path &path) const
  30. {
  31. sourceImage->exportBitmap(path);
  32. }
  33. Point ImageSharedScaled::dimensions() const
  34. {
  35. return sourceImage->dimensions();
  36. }
  37. bool ImageSharedScaled::isTransparent(const Point &coords) const
  38. {
  39. return sourceImage->isTransparent(coords);
  40. }
  41. std::shared_ptr<IImage> ImageSharedScaled::createImageReference(EImageBlitMode mode)
  42. {
  43. return std::make_shared<ImageScaled>(shared_from_this(), mode);
  44. }
  45. std::shared_ptr<ISharedImage> ImageSharedScaled::horizontalFlip() const
  46. {
  47. return std::make_shared<ImageSharedScaled>(std::dynamic_pointer_cast<SDLImageShared>(sourceImage->horizontalFlip()));
  48. }
  49. std::shared_ptr<ISharedImage> ImageSharedScaled::verticalFlip() const
  50. {
  51. return std::make_shared<ImageSharedScaled>(std::dynamic_pointer_cast<SDLImageShared>(sourceImage->verticalFlip()));
  52. }
  53. std::shared_ptr<ImageSharedScaled> ImageSharedScaled::scaleFast(const Point &size) const
  54. {
  55. return std::make_shared<ImageSharedScaled>(sourceImage->scaleFast(size));
  56. }
  57. ///////////////////////////////////////////////////////////////////////////////////////////////////
  58. ImageScaled::ImageScaled(const std::shared_ptr<ImageSharedScaled> &image, EImageBlitMode mode)
  59. :image(image)
  60. , alphaValue(SDL_ALPHA_OPAQUE)
  61. , blitMode(mode)
  62. {
  63. }
  64. void ImageScaled::scaleFast(const Point &size)
  65. {
  66. image = image->scaleFast(size);
  67. }
  68. void ImageScaled::exportBitmap(const boost::filesystem::path &path) const
  69. {
  70. image->exportBitmap(path);
  71. }
  72. bool ImageScaled::isTransparent(const Point &coords) const
  73. {
  74. return image->isTransparent(coords);
  75. }
  76. Point ImageScaled::dimensions() const
  77. {
  78. return image->dimensions();
  79. }
  80. void ImageScaled::setAlpha(uint8_t value)
  81. {
  82. alphaValue = value;
  83. }
  84. void ImageScaled::setBlitMode(EImageBlitMode mode)
  85. {
  86. blitMode = mode;
  87. }
  88. void ImageScaled::draw(SDL_Surface *where, const Point &pos, const Rect *src) const
  89. {
  90. image->draw(where, pos, src, alphaValue, blitMode);
  91. }
  92. void ImageScaled::setSpecialPalette(const SpecialPalette &SpecialPalette, uint32_t colorsToSkipMask)
  93. {
  94. }
  95. void ImageScaled::playerColored(PlayerColor player)
  96. {
  97. }
  98. void ImageScaled::setFlagColor(PlayerColor player)
  99. {
  100. }
  101. void ImageScaled::shiftPalette(uint32_t firstColorID, uint32_t colorsToMove, uint32_t distanceToMove)
  102. {
  103. }
  104. void ImageScaled::adjustPalette(const ColorFilter &shifter, uint32_t colorsToSkipMask)
  105. {
  106. }