TilesetPtr TilesetType_Zone66::open(stream::inout_sptr psTileset, SuppData& suppData) const { PaletteTablePtr pal; // Only load the palette if one was given if (suppData.find(SuppItem::Palette) != suppData.end()) { ImagePtr palFile(new Palette_VGA(suppData[SuppItem::Palette], 6)); pal = palFile->getPalette(); pal->at(Z66_TRANSPARENT_COLOUR).alpha = 0; } return TilesetPtr(new Tileset_Zone66(psTileset, pal)); }
TilesetPtr TilesetType_HarryCHR::open(stream::inout_sptr psTileset, SuppData& suppData) const { PaletteTablePtr pal; if (suppData.find(SuppItem::Palette) != suppData.end()) { ImagePtr palFile(new Palette_HarryGMF(suppData[SuppItem::Palette])); pal = palFile->getPalette(); } else { throw stream::error("no palette specified (missing supplementary item)"); } return TilesetPtr(new Tileset_HarryCHR(psTileset, pal)); }
std::unique_ptr<Image> ImageType_VGA_Planar_RawBase::open( std::unique_ptr<stream::inout> content, SuppData& suppData) const { std::shared_ptr<const Palette> pal; if (suppData.find(SuppItem::Palette) != suppData.end()) { auto palFile = std::make_shared<Palette_VGA>( std::move(suppData[SuppItem::Palette]), this->depth ); pal = palFile->palette(); } return std::make_unique<Image_VGA_Planar_Raw>( std::move(content), Point{320, 200}, pal ); }
TilesetPtr TilesetType_HarryCHR::create(stream::inout_sptr psTileset, SuppData& suppData) const { psTileset->truncate(CHR_WIDTH * CHR_HEIGHT * 256); psTileset->seekp(0, stream::start); char empty[CHR_WIDTH * CHR_HEIGHT]; memset(empty, 0x00, CHR_WIDTH * CHR_HEIGHT); for (int i = 0; i < 256; i++) psTileset->write(empty, CHR_WIDTH * CHR_HEIGHT); PaletteTablePtr pal; if (suppData.find(SuppItem::Palette) != suppData.end()) { ImagePtr palFile(new Palette_VGA(suppData[SuppItem::Palette], 6)); pal = palFile->getPalette(); } else { throw stream::error("no palette specified (missing supplementary item)"); } return TilesetPtr(new Tileset_HarryCHR(psTileset, pal)); }