JpgSubfile.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //
  2. // Created by Иван_Архипов on 24.11.2017.
  3. //
  4. #include "JpgSubfile.h"
  5. #include "../BinaryData.h"
  6. #include "../DatFile.h"
  7. #include "../Common/DatException.h"
  8. #include "../SubfileData.h"
  9. namespace LOTRO_DAT {
  10. JpgSubfile::JpgSubfile() = default;
  11. JpgSubfile::JpgSubfile(DatFile *dat, long long dictionary_offset, long long fragments_count, long long unknown1,
  12. long long file_id, long long file_offset, long long file_size, long long timestamp,
  13. long long version, long long block_size)
  14. : Subfile(dat, dictionary_offset, fragments_count, unknown1, file_id, file_offset, file_size, timestamp,
  15. version, block_size) {
  16. }
  17. FILE_TYPE JpgSubfile::FileType() const {
  18. return JPG;
  19. }
  20. std::string JpgSubfile::Extension() const {
  21. return std::string(".jpg");
  22. }
  23. std::vector<SubfileData> JpgSubfile::PrepareForExport(const BinaryData &file_data) {
  24. std::vector<SubfileData> output(1);
  25. output[0].binary_data = file_data.CutData(24);
  26. output[0].text_data = u"";
  27. output[0].options["fid"] = file_id();
  28. output[0].options["ext"] = Extension();
  29. return output;
  30. }
  31. BinaryData JpgSubfile::MakeForImport(const BinaryData &old_data, const SubfileData &data) {
  32. if (!data.options["ext"] || data.options["ext"].as<std::string>() != Extension() ||
  33. !data.options["fid"] || data.options["fid"].as<long long>() != file_id()) {
  34. throw DatException("Bad DdsSubfile::MakeForImport() - invalid options data!", IMPORT_EXCEPTION);
  35. }
  36. BinaryData file_size;
  37. file_size.FromNumber<4>(data.binary_data.size());
  38. return old_data.CutData(0, 28) + file_size + data.binary_data;
  39. }
  40. };