本文整理汇总了C++中Site::selectedFrames方法的典型用法代码示例。如果您正苦于以下问题:C++ Site::selectedFrames方法的具体用法?C++ Site::selectedFrames怎么用?C++ Site::selectedFrames使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Site
的用法示例。
在下文中一共展示了Site::selectedFrames方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onExecute
void FramePropertiesCommand::onExecute(Context* context)
{
const ContextReader reader(context);
const Sprite* sprite = reader.sprite();
auto& docPref = Preferences::instance().document(context->activeDocument());
int base = docPref.timeline.firstFrame();
app::gen::FrameProperties window;
SelectedFrames selFrames;
switch (m_target) {
case ALL_FRAMES:
selFrames.insert(0, sprite->lastFrame());
break;
case CURRENT_RANGE: {
Site site = context->activeSite();
if (site.inTimeline()) {
selFrames = site.selectedFrames();
}
else {
selFrames.insert(site.frame());
}
break;
}
case SPECIFIC_FRAME:
selFrames.insert(m_frame-base);
break;
}
ASSERT(!selFrames.empty());
if (selFrames.empty())
return;
if (selFrames.size() == 1)
window.frame()->setTextf("%d", selFrames.firstFrame()+base);
else if (selFrames.ranges() == 1) {
window.frame()->setTextf("[%d...%d]",
selFrames.firstFrame()+base,
selFrames.lastFrame()+base);
}
else
window.frame()->setTextf("Multiple Frames");
window.frlen()->setTextf(
"%d", sprite->frameDuration(selFrames.firstFrame()));
window.openWindowInForeground();
if (window.closer() == window.ok()) {
int newMsecs = window.frlen()->textInt();
ContextWriter writer(reader);
Transaction transaction(writer.context(), "Frame Duration");
DocApi api = writer.document()->getApi(transaction);
for (frame_t frame : selFrames)
api.setFrameDuration(writer.sprite(), frame, newMsecs);
transaction.commit();
}
}