|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzLib includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/stage.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshsimplelevel.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshchildlevel.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshleveltypes.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txsheet.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshcell.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/textureutils.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/imagemanager.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "imagebuilders.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/stageplayer.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
using namespace Stage;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//*****************************************************************************************
|
|
Toshihiro Shimizu |
890ddd |
// Stage::Player implementation
|
|
Toshihiro Shimizu |
890ddd |
//*****************************************************************************************
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
double Player::m_onionSkinFrontSize = 0;
|
|
Shinya Kitaoka |
120a6e |
double Player::m_onionSkinBackSize = 0;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
Stage::Player::Player()
|
|
Shinya Kitaoka |
120a6e |
: m_placement()
|
|
Shinya Kitaoka |
120a6e |
, m_dpiAff()
|
|
Shinya Kitaoka |
120a6e |
, m_z(0)
|
|
Shinya Kitaoka |
120a6e |
, m_onionSkinDistance(c_noOnionSkin)
|
|
Shinya Kitaoka |
120a6e |
, m_ancestorColumnIndex(-1)
|
|
Shinya Kitaoka |
120a6e |
, m_isCurrentColumn(false)
|
|
Shinya Kitaoka |
120a6e |
, m_isCurrentXsheetLevel(false)
|
|
Shinya Kitaoka |
120a6e |
, m_sl()
|
|
Shinya Kitaoka |
120a6e |
, m_xsh()
|
|
Shinya Kitaoka |
120a6e |
, m_column(-1)
|
|
Shinya Kitaoka |
120a6e |
, m_frame(0)
|
|
Shinya Kitaoka |
120a6e |
, m_isPlaying(false)
|
|
Shinya Kitaoka |
120a6e |
, m_opacity(255)
|
|
Shinya Kitaoka |
120a6e |
, m_bingoOrder(0) {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TImageP Stage::Player::image() const {
|
|
Shinya Kitaoka |
120a6e |
if (!m_sl) return TImageP();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
std::string id = m_sl->getImageId(m_fid);
|
|
Shinya Kitaoka |
120a6e |
int slType = m_sl->getType();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
if (slType == PLI_XSHLEVEL && TXshSimpleLevel::m_rasterizePli) {
|
|
Shinya Kitaoka |
120a6e |
if (!(m_isCurrentColumn && m_isCurrentXsheetLevel)) id = id + "_rasterized";
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
if (TXshSimpleLevel::m_fillFullColorRaster &&
|
|
Shinya Kitaoka |
120a6e |
(slType == OVL_XSHLEVEL || slType == TZI_XSHLEVEL))
|
|
Shinya Kitaoka |
120a6e |
id = id + "_filled";
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
ImageLoader::BuildExtData extData(m_sl, m_fid);
|
|
Shinya Kitaoka |
120a6e |
return ImageManager::instance()->getImage(id, ImageManager::none, &extData);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
DrawableTextureDataP Stage::Player::texture() const {
|
|
Shinya Kitaoka |
120a6e |
if (m_sl) {
|
|
Shinya Kitaoka |
120a6e |
// Ask the sLevel directly
|
|
Shinya Kitaoka |
120a6e |
return texture_utils::getTextureData(
|
|
Shinya Kitaoka |
120a6e |
m_sl, m_fid, -1); // -1 stands for 'current subsampling'
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// The level is supposedly a sub-xsheet one. It means we have to build the
|
|
Shinya Kitaoka |
120a6e |
// texture
|
|
Shinya Kitaoka |
120a6e |
// by rendering the sub-xsheet.
|
|
Shinya Kitaoka |
120a6e |
const TXshCell &cell = m_xsh->getCell(m_frame, m_column);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TXshChildLevel *cl = cell.getChildLevel();
|
|
Shinya Kitaoka |
120a6e |
if (!cl) return DrawableTextureDataP(); // Should never happen, though
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// Fetch the xsheet data
|
|
Shinya Kitaoka |
120a6e |
TXsheet *xsh = cl->getXsheet();
|
|
Shinya Kitaoka |
120a6e |
int frame =
|
|
Shinya Kitaoka |
120a6e |
cell.getFrameId().getNumber() - 1; // frame 1 internally stands for 0
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
return texture_utils::getTextureData(xsh, frame);
|
|
Toshihiro Shimizu |
890ddd |
}
|