highlight xsheet line every second
This commit is contained in:
parent
b45e7ac54a
commit
e1d56eec48
13 changed files with 118 additions and 133 deletions
|
@ -133,6 +133,7 @@ enum PreferencesItemId {
|
||||||
expandFunctionHeader,
|
expandFunctionHeader,
|
||||||
showColumnNumbers,
|
showColumnNumbers,
|
||||||
parentColorsInXsheetColumn,
|
parentColorsInXsheetColumn,
|
||||||
|
highlightLineEverySecond,
|
||||||
syncLevelRenumberWithXsheet,
|
syncLevelRenumberWithXsheet,
|
||||||
currentTimelineEnabled,
|
currentTimelineEnabled,
|
||||||
currentColumnColor,
|
currentColumnColor,
|
||||||
|
|
|
@ -190,10 +190,8 @@ Set the distance between two markers to \p distance and \b offset to markers
|
||||||
offset,
|
offset,
|
||||||
\sa setMarkers()
|
\sa setMarkers()
|
||||||
*/
|
*/
|
||||||
void getMarkers(int &distance, int &offset) const {
|
void getMarkers(int &distance, int &offset, int &secDistance) const;
|
||||||
distance = m_markerDistance;
|
|
||||||
offset = m_markerOffset;
|
|
||||||
}
|
|
||||||
/*!
|
/*!
|
||||||
Sets information about xsheet markers, xsheet horizontal line.
|
Sets information about xsheet markers, xsheet horizontal line.
|
||||||
Sets the distance between two markers to \p distance and \b offset,row
|
Sets the distance between two markers to \p distance and \b offset,row
|
||||||
|
@ -202,6 +200,7 @@ of first
|
||||||
\sa getMarkers()
|
\sa getMarkers()
|
||||||
*/
|
*/
|
||||||
void setMarkers(int distance, int offset);
|
void setMarkers(int distance, int offset);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns full-color images subsampling in scene. Subsampling value is
|
Returns full-color images subsampling in scene. Subsampling value is
|
||||||
the simplifying
|
the simplifying
|
||||||
|
|
|
@ -312,7 +312,7 @@ class DVAPI SpreadsheetViewer : public QDialog {
|
||||||
QPoint m_lastAutoPanPos;
|
QPoint m_lastAutoPanPos;
|
||||||
int m_rowCount, m_columnCount;
|
int m_rowCount, m_columnCount;
|
||||||
int m_currentRow;
|
int m_currentRow;
|
||||||
int m_markRowDistance, m_markRowOffset;
|
int m_markRowDistance, m_markRowOffset, m_markSecRowDistance;
|
||||||
// QRect m_selectedCells; // x=col, y=row
|
// QRect m_selectedCells; // x=col, y=row
|
||||||
bool m_isComputingSize;
|
bool m_isComputingSize;
|
||||||
// const Orientation *m_orientation;
|
// const Orientation *m_orientation;
|
||||||
|
@ -456,17 +456,22 @@ public:
|
||||||
bool isSelectedCell(int row, int col) const {
|
bool isSelectedCell(int row, int col) const {
|
||||||
return getSelectedCells().contains(QPoint(col, row));
|
return getSelectedCells().contains(QPoint(col, row));
|
||||||
}
|
}
|
||||||
void setMarkRow(int distance, int offset) {
|
void setMarkRow(int distance, int offset, int secDistance) {
|
||||||
m_markRowDistance = distance; // distance > 0 ? distance : 6;
|
m_markRowDistance = distance; // distance > 0 ? distance : 6;
|
||||||
m_markRowOffset = offset;
|
m_markRowOffset = offset;
|
||||||
|
m_markSecRowDistance = secDistance;
|
||||||
}
|
}
|
||||||
void getMarkRow(int &distance, int &offset) const {
|
void getMarkRow(int &distance, int &offset) const {
|
||||||
distance = m_markRowDistance;
|
distance = m_markRowDistance;
|
||||||
offset = m_markRowOffset;
|
offset = m_markRowOffset;
|
||||||
}
|
}
|
||||||
int isMarkRow(int row) const {
|
bool isMarkRow(int row) const {
|
||||||
return m_markRowDistance > 0 &&
|
return m_markRowDistance > 0 &&
|
||||||
((row - m_markRowOffset) % m_markRowDistance) == 0;
|
((row - m_markRowOffset) % m_markRowDistance) == 0 && row > 0;
|
||||||
|
}
|
||||||
|
bool isMarkSecRow(int row) const {
|
||||||
|
return m_markSecRowDistance > 0 &&
|
||||||
|
((row - m_markRowOffset) % m_markSecRowDistance) == 0 && row > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setFrameHandle(TFrameHandle *frameHandle);
|
void setFrameHandle(TFrameHandle *frameHandle);
|
||||||
|
|
|
@ -1301,6 +1301,7 @@ QString PreferencesPopup::getUIString(PreferencesItemId id) {
|
||||||
{showColumnNumbers, tr("Show Column Numbers in Column Headers")},
|
{showColumnNumbers, tr("Show Column Numbers in Column Headers")},
|
||||||
{parentColorsInXsheetColumn,
|
{parentColorsInXsheetColumn,
|
||||||
tr("Show Column Parent's Color in the Xsheet")},
|
tr("Show Column Parent's Color in the Xsheet")},
|
||||||
|
{highlightLineEverySecond, tr("Highlight Line Every Second")},
|
||||||
{syncLevelRenumberWithXsheet,
|
{syncLevelRenumberWithXsheet,
|
||||||
tr("Sync Level Strip Drawing Number Changes with the Scene")},
|
tr("Sync Level Strip Drawing Number Changes with the Scene")},
|
||||||
{currentTimelineEnabled,
|
{currentTimelineEnabled,
|
||||||
|
@ -2007,6 +2008,7 @@ QWidget* PreferencesPopup::createXsheetPage() {
|
||||||
{ insertUI(expandFunctionHeader, xshToolbarLay); }
|
{ insertUI(expandFunctionHeader, xshToolbarLay); }
|
||||||
insertUI(showColumnNumbers, lay);
|
insertUI(showColumnNumbers, lay);
|
||||||
insertUI(parentColorsInXsheetColumn, lay);
|
insertUI(parentColorsInXsheetColumn, lay);
|
||||||
|
insertUI(highlightLineEverySecond, lay);
|
||||||
// insertUI(syncLevelRenumberWithXsheet, lay);
|
// insertUI(syncLevelRenumberWithXsheet, lay);
|
||||||
// insertUI(currentTimelineEnabled, lay);
|
// insertUI(currentTimelineEnabled, lay);
|
||||||
// insertUI(currentColumnColor, lay);
|
// insertUI(currentColumnColor, lay);
|
||||||
|
|
|
@ -270,8 +270,8 @@ SceneSettingsPopup::SceneSettingsPopup()
|
||||||
m_tlvSubsamplingFld = new DVGui::IntLineEdit(this, tlvSubsampling, 1);
|
m_tlvSubsamplingFld = new DVGui::IntLineEdit(this, tlvSubsampling, 1);
|
||||||
|
|
||||||
// Marker Interval - Start Frame
|
// Marker Interval - Start Frame
|
||||||
int distance, offset;
|
int distance, offset, secDistance;
|
||||||
sprop->getMarkers(distance, offset);
|
sprop->getMarkers(distance, offset, secDistance);
|
||||||
m_markerIntervalFld = new DVGui::IntLineEdit(this, distance, 0);
|
m_markerIntervalFld = new DVGui::IntLineEdit(this, distance, 0);
|
||||||
m_startFrameFld = new DVGui::IntLineEdit(this, offset);
|
m_startFrameFld = new DVGui::IntLineEdit(this, offset);
|
||||||
|
|
||||||
|
@ -294,7 +294,8 @@ SceneSettingsPopup::SceneSettingsPopup()
|
||||||
// Frame Rate
|
// Frame Rate
|
||||||
mainLayout->addWidget(new QLabel(tr("Frame Rate:"), this), 0, 0,
|
mainLayout->addWidget(new QLabel(tr("Frame Rate:"), this), 0, 0,
|
||||||
Qt::AlignRight | Qt::AlignVCenter);
|
Qt::AlignRight | Qt::AlignVCenter);
|
||||||
mainLayout->addWidget(m_frameRateFld, 0, 1);
|
mainLayout->addWidget(m_frameRateFld, 0, 1, 1, 4,
|
||||||
|
Qt::AlignLeft | Qt::AlignVCenter);
|
||||||
// Camera BG color
|
// Camera BG color
|
||||||
mainLayout->addWidget(new QLabel(tr("Camera BG Color:"), this), 1, 0,
|
mainLayout->addWidget(new QLabel(tr("Camera BG Color:"), this), 1, 0,
|
||||||
Qt::AlignRight | Qt::AlignVCenter);
|
Qt::AlignRight | Qt::AlignVCenter);
|
||||||
|
@ -305,7 +306,8 @@ SceneSettingsPopup::SceneSettingsPopup()
|
||||||
mainLayout->addWidget(m_fieldGuideFld, 2, 1);
|
mainLayout->addWidget(m_fieldGuideFld, 2, 1);
|
||||||
mainLayout->addWidget(new QLabel(tr("A/R:"), this), 2, 2,
|
mainLayout->addWidget(new QLabel(tr("A/R:"), this), 2, 2,
|
||||||
Qt::AlignRight | Qt::AlignVCenter);
|
Qt::AlignRight | Qt::AlignVCenter);
|
||||||
mainLayout->addWidget(m_aspectRatioFld, 2, 3);
|
mainLayout->addWidget(m_aspectRatioFld, 2, 3, 1, 2,
|
||||||
|
Qt::AlignLeft | Qt::AlignVCenter);
|
||||||
// Image Subsampling - Tlv Subsampling
|
// Image Subsampling - Tlv Subsampling
|
||||||
mainLayout->addWidget(new QLabel(tr("Image Subsampling:"), this), 3, 0,
|
mainLayout->addWidget(new QLabel(tr("Image Subsampling:"), this), 3, 0,
|
||||||
Qt::AlignRight | Qt::AlignVCenter);
|
Qt::AlignRight | Qt::AlignVCenter);
|
||||||
|
@ -362,9 +364,10 @@ SceneSettingsPopup::SceneSettingsPopup()
|
||||||
SLOT(onTlvSubsampEditingFinished()));
|
SLOT(onTlvSubsampEditingFinished()));
|
||||||
// Marker Interval - Start Frame
|
// Marker Interval - Start Frame
|
||||||
ret = ret && connect(m_markerIntervalFld, SIGNAL(editingFinished()), this,
|
ret = ret && connect(m_markerIntervalFld, SIGNAL(editingFinished()), this,
|
||||||
SLOT(onMakerIntervalEditingFinished()));
|
SLOT(onMakerInformationChanged()));
|
||||||
ret = ret && connect(m_startFrameFld, SIGNAL(editingFinished()), this,
|
ret = ret && connect(m_startFrameFld, SIGNAL(editingFinished()), this,
|
||||||
SLOT(onStartFrameEditingFinished()));
|
SLOT(onMakerInformationChanged()));
|
||||||
|
|
||||||
// Use Color Filter and Transparency for Rendering
|
// Use Color Filter and Transparency for Rendering
|
||||||
ret = ret && connect(m_colorFilterOnRenderCB, SIGNAL(stateChanged(int)), this,
|
ret = ret && connect(m_colorFilterOnRenderCB, SIGNAL(stateChanged(int)), this,
|
||||||
SLOT(onColorFilterOnRenderChanged()));
|
SLOT(onColorFilterOnRenderChanged()));
|
||||||
|
@ -418,8 +421,8 @@ void SceneSettingsPopup::update() {
|
||||||
m_fullcolorSubsamplingFld->setValue(sprop->getFullcolorSubsampling());
|
m_fullcolorSubsamplingFld->setValue(sprop->getFullcolorSubsampling());
|
||||||
if (m_tlvSubsamplingFld)
|
if (m_tlvSubsamplingFld)
|
||||||
m_tlvSubsamplingFld->setValue(sprop->getTlvSubsampling());
|
m_tlvSubsamplingFld->setValue(sprop->getTlvSubsampling());
|
||||||
int markerDistance = 0, markerOffset = 0;
|
int markerDistance = 0, markerOffset = 0, secDistance;
|
||||||
sprop->getMarkers(markerDistance, markerOffset);
|
sprop->getMarkers(markerDistance, markerOffset, secDistance);
|
||||||
m_markerIntervalFld->setValue(markerDistance);
|
m_markerIntervalFld->setValue(markerDistance);
|
||||||
m_startFrameFld->setValue(markerOffset + 1);
|
m_startFrameFld->setValue(markerOffset + 1);
|
||||||
m_colorFilterOnRenderCB->setChecked(
|
m_colorFilterOnRenderCB->setChecked(
|
||||||
|
@ -494,29 +497,13 @@ void SceneSettingsPopup::onTlvSubsampEditingFinished() {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneSettingsPopup::onMakerIntervalEditingFinished() {
|
void SceneSettingsPopup::onMakerInformationChanged() {
|
||||||
TSceneProperties *sprop = getProperties();
|
TSceneProperties *sprop = getProperties();
|
||||||
int distance, offset;
|
int distance, offset, secDistance;
|
||||||
sprop->getMarkers(distance, offset);
|
sprop->getMarkers(distance, offset, secDistance);
|
||||||
int markerDistance = m_markerIntervalFld->text().toInt();
|
int markerDistance = m_markerIntervalFld->text().toInt();
|
||||||
int markerOffset = m_startFrameFld->text().toInt() - 1;
|
int markerOffset = m_startFrameFld->text().toInt() - 1;
|
||||||
assert(offset == markerOffset);
|
if (distance == markerDistance && offset == markerOffset) return;
|
||||||
if (distance == markerDistance) return;
|
|
||||||
sprop->setMarkers(markerDistance, markerOffset);
|
|
||||||
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
|
||||||
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void SceneSettingsPopup::onStartFrameEditingFinished() {
|
|
||||||
TSceneProperties *sprop = getProperties();
|
|
||||||
int distance, offset;
|
|
||||||
sprop->getMarkers(distance, offset);
|
|
||||||
int markerDistance = m_markerIntervalFld->text().toInt();
|
|
||||||
int markerOffset = m_startFrameFld->text().toInt() - 1;
|
|
||||||
assert(markerDistance == distance);
|
|
||||||
if (offset == markerOffset) return;
|
|
||||||
sprop->setMarkers(markerDistance, markerOffset);
|
sprop->setMarkers(markerDistance, markerOffset);
|
||||||
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
||||||
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
|
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
|
||||||
|
|
|
@ -76,8 +76,7 @@ public slots:
|
||||||
|
|
||||||
void onFullColorSubsampEditingFinished();
|
void onFullColorSubsampEditingFinished();
|
||||||
void onTlvSubsampEditingFinished();
|
void onTlvSubsampEditingFinished();
|
||||||
void onMakerIntervalEditingFinished();
|
void onMakerInformationChanged();
|
||||||
void onStartFrameEditingFinished();
|
|
||||||
|
|
||||||
void setBgColor(const TPixel32 &value, bool isDragging);
|
void setBgColor(const TPixel32 &value, bool isDragging);
|
||||||
|
|
||||||
|
|
|
@ -1256,32 +1256,42 @@ void CellArea::drawFrameSeparator(QPainter &p, int row, int col,
|
||||||
layerAxisRange = NumberRange(layerAxis + 1, layerAxis + adjY);
|
layerAxisRange = NumberRange(layerAxis + 1, layerAxis + adjY);
|
||||||
}
|
}
|
||||||
|
|
||||||
// mark interval every 6 frames
|
// mark interval
|
||||||
int distance, offset;
|
int distance, offset, secDistance;
|
||||||
TApp::instance()->getCurrentScene()->getScene()->getProperties()->getMarkers(
|
TApp::instance()->getCurrentScene()->getScene()->getProperties()->getMarkers(
|
||||||
distance, offset);
|
distance, offset, secDistance);
|
||||||
// if (distance == 0) distance = 6;
|
|
||||||
|
|
||||||
bool isAfterMarkers =
|
bool isAfterMarkers =
|
||||||
distance > 0 && ((row - offset) % distance) == 0 && row != 0;
|
distance > 0 && ((row - offset) % distance) == 0 && row != 0;
|
||||||
QColor color = isAfterMarkers ? m_viewer->getMarkerLineColor()
|
bool isAfterSecMarkers =
|
||||||
: m_viewer->getLightLineColor();
|
secDistance > 0 && ((row - offset) % secDistance) == 0 && row != 0;
|
||||||
color.setAlpha(isAfterMarkers ? m_viewer->getMarkerLineColor().alpha()
|
|
||||||
: m_viewer->getLightLineColor().alpha());
|
QColor color = (isAfterMarkers || isAfterSecMarkers)
|
||||||
|
? m_viewer->getMarkerLineColor()
|
||||||
|
: m_viewer->getLightLineColor();
|
||||||
|
double lineWidth = (isAfterSecMarkers) ? 3. : 1.;
|
||||||
|
|
||||||
|
int frameAxis = m_viewer->rowToFrameAxis(row);
|
||||||
|
int handleSize =
|
||||||
|
(emptyFrame)
|
||||||
|
? 0
|
||||||
|
: (o->isVerticalTimeline())
|
||||||
|
? (isAfterMarkers || isAfterSecMarkers)
|
||||||
|
? 0
|
||||||
|
: -1 // o->rect(PredefinedRect::DRAG_HANDLE_CORNER).width()
|
||||||
|
: -1; // o->rect(PredefinedRect::DRAG_HANDLE_CORNER).height();
|
||||||
|
|
||||||
int frameAxis = m_viewer->rowToFrameAxis(row);
|
|
||||||
QLine horizontalLine = m_viewer->orientation()->horizontalLine(
|
QLine horizontalLine = m_viewer->orientation()->horizontalLine(
|
||||||
frameAxis,
|
frameAxis, layerAxisRange.adjusted(handleSize - 1, 1));
|
||||||
layerAxisRange.adjusted((o->isVerticalTimeline() ? 0 : -1), 0));
|
|
||||||
if (heldFrame) {
|
if (heldFrame) {
|
||||||
int x = horizontalLine.x1();
|
int x = horizontalLine.x1();
|
||||||
int y = horizontalLine.y2() - 1;
|
int y = horizontalLine.y2() - 2;
|
||||||
horizontalLine.setP1(QPoint(x, y));
|
horizontalLine.setP1(QPoint(x, y));
|
||||||
color.setAlpha(120);
|
color.setAlpha(120);
|
||||||
} else if (!o->isVerticalTimeline() && !isAfterMarkers && emptyFrame)
|
} else if (!o->isVerticalTimeline() && !isAfterMarkers && emptyFrame)
|
||||||
color.setAlpha(isAfterMarkers ? m_viewer->getMarkerLineColor().alpha()
|
color.setAlpha(m_viewer->getLightLineColor().alpha());
|
||||||
: m_viewer->getLightLineColor().alpha());
|
|
||||||
p.setPen(color);
|
p.setPen(QPen(color, lineWidth, Qt::SolidLine, Qt::FlatCap));
|
||||||
p.drawLine(horizontalLine);
|
p.drawLine(horizontalLine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1535,10 +1545,9 @@ void CellArea::drawExtenderHandles(QPainter &p) {
|
||||||
? QPoint(0, 0)
|
? QPoint(0, 0)
|
||||||
: o->point(PredefinedPoint::KEY_HIDDEN);
|
: o->point(PredefinedPoint::KEY_HIDDEN);
|
||||||
|
|
||||||
int distance, offset;
|
int distance, offset, secDistance;
|
||||||
TApp::instance()->getCurrentScene()->getScene()->getProperties()->getMarkers(
|
TApp::instance()->getCurrentScene()->getScene()->getProperties()->getMarkers(
|
||||||
distance, offset);
|
distance, offset, secDistance);
|
||||||
// if (distance == 0) distance = 6;
|
|
||||||
|
|
||||||
QPoint xyRadius = o->point(PredefinedPoint::EXTENDER_XY_RADIUS);
|
QPoint xyRadius = o->point(PredefinedPoint::EXTENDER_XY_RADIUS);
|
||||||
|
|
||||||
|
@ -1629,6 +1638,8 @@ void CellArea::drawSoundCell(QPainter &p, int row, int col, bool isReference) {
|
||||||
if (!soundColumn->getLevelRange(row, r0, r1)) {
|
if (!soundColumn->getLevelRange(row, r0, r1)) {
|
||||||
// cell mark
|
// cell mark
|
||||||
drawCellMarker(p, markId, rect, true, isNextEmpty);
|
drawCellMarker(p, markId, rect, true, isNextEmpty);
|
||||||
|
if (o->isVerticalTimeline() || !row) drawFrameSeparator(p, row, col, false);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
bool isFirstRow = (row > 0 && row == r0);
|
bool isFirstRow = (row > 0 && row == r0);
|
||||||
|
@ -1762,19 +1773,6 @@ void CellArea::drawSoundCell(QPainter &p, int row, int col, bool isReference) {
|
||||||
if (r1 != r1WithoutOff) p.fillRect(modifierRect, SoundColumnExtenderColor);
|
if (r1 != r1WithoutOff) p.fillRect(modifierRect, SoundColumnExtenderColor);
|
||||||
m_soundLevelModifyRects.append(modifierRect);
|
m_soundLevelModifyRects.append(modifierRect);
|
||||||
}
|
}
|
||||||
|
|
||||||
int distance, markerOffset;
|
|
||||||
TApp::instance()->getCurrentScene()->getScene()->getProperties()->getMarkers(
|
|
||||||
distance, markerOffset);
|
|
||||||
// if (distance == 0) distance = 6;
|
|
||||||
bool isAfterMarkers =
|
|
||||||
distance > 0 && ((row - markerOffset) % distance) == 0 && row != 0;
|
|
||||||
|
|
||||||
// draw marker interval
|
|
||||||
if (o->isVerticalTimeline() && isAfterMarkers) {
|
|
||||||
p.setPen(m_viewer->getMarkerLineColor());
|
|
||||||
p.drawLine(o->line(PredefinedLine::SEE_MARKER_THROUGH).translated(xy));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -2211,18 +2209,6 @@ void CellArea::drawLevelCell(QPainter &p, int row, int col, bool isReference,
|
||||||
cellColor);
|
cellColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
int distance, offset;
|
|
||||||
TApp::instance()->getCurrentScene()->getScene()->getProperties()->getMarkers(
|
|
||||||
distance, offset);
|
|
||||||
// if (distance == 0) distance = 6;
|
|
||||||
bool isAfterMarkers =
|
|
||||||
distance > 0 && ((row - offset) % distance) == 0 && row != 0;
|
|
||||||
|
|
||||||
// draw marker interval
|
|
||||||
if (o->isVerticalTimeline() && isAfterMarkers) {
|
|
||||||
p.setPen(m_viewer->getMarkerLineColor());
|
|
||||||
p.drawLine(o->line(PredefinedLine::SEE_MARKER_THROUGH).translated(xy));
|
|
||||||
}
|
|
||||||
|
|
||||||
QRect nameRect = o->rect(PredefinedRect::CELL_NAME).translated(QPoint(x, y));
|
QRect nameRect = o->rect(PredefinedRect::CELL_NAME).translated(QPoint(x, y));
|
||||||
|
|
||||||
|
@ -2327,6 +2313,12 @@ void CellArea::drawLevelCell(QPainter &p, int row, int col, bool isReference,
|
||||||
|
|
||||||
if (isImplicitCell || isStopFrame) return;
|
if (isImplicitCell || isStopFrame) return;
|
||||||
|
|
||||||
|
int distance, offset, secDistance;
|
||||||
|
TApp::instance()->getCurrentScene()->getScene()->getProperties()->getMarkers(
|
||||||
|
distance, offset, secDistance);
|
||||||
|
bool isAfterMarkers =
|
||||||
|
distance > 0 && ((row - offset) % distance) == 0 && row != 0;
|
||||||
|
|
||||||
// draw level name
|
// draw level name
|
||||||
if (showLevelName &&
|
if (showLevelName &&
|
||||||
(!sameLevel || (row > 0 && xsh->isImplicitCell(row - 1, col)) ||
|
(!sameLevel || (row > 0 && xsh->isImplicitCell(row - 1, col)) ||
|
||||||
|
@ -2462,19 +2454,6 @@ void CellArea::drawSoundTextCell(QPainter &p, int row, int col) {
|
||||||
TFrameId fid = cell.m_frameId;
|
TFrameId fid = cell.m_frameId;
|
||||||
if (fid.getNumber() - 1 < 0) return;
|
if (fid.getNumber() - 1 < 0) return;
|
||||||
|
|
||||||
int distance, offset;
|
|
||||||
TApp::instance()->getCurrentScene()->getScene()->getProperties()->getMarkers(
|
|
||||||
distance, offset);
|
|
||||||
// if (distance == 0) distance = 6;
|
|
||||||
bool isAfterMarkers =
|
|
||||||
distance > 0 && ((row - offset) % distance) == 0 && row != 0;
|
|
||||||
|
|
||||||
// draw marker interval
|
|
||||||
if (o->isVerticalTimeline() && isAfterMarkers) {
|
|
||||||
p.setPen(m_viewer->getMarkerLineColor());
|
|
||||||
p.drawLine(o->line(PredefinedLine::SEE_MARKER_THROUGH).translated(xy));
|
|
||||||
}
|
|
||||||
|
|
||||||
p.setPen(Qt::black);
|
p.setPen(Qt::black);
|
||||||
QRect nameRect = o->rect(PredefinedRect::CELL_NAME).translated(QPoint(x, y));
|
QRect nameRect = o->rect(PredefinedRect::CELL_NAME).translated(QPoint(x, y));
|
||||||
nameRect.adjust(0, 0, -frameAdj.x(), -frameAdj.y());
|
nameRect.adjust(0, 0, -frameAdj.x(), -frameAdj.y());
|
||||||
|
@ -2658,8 +2637,6 @@ void CellArea::drawSoundTextColumn(QPainter &p, int r0, int r1, int col) {
|
||||||
|
|
||||||
// paint background and other stuffs
|
// paint background and other stuffs
|
||||||
for (auto info : infoList) {
|
for (auto info : infoList) {
|
||||||
bool heldFrame = (!o->isVerticalTimeline() && info.row != row);
|
|
||||||
|
|
||||||
bool isSelected =
|
bool isSelected =
|
||||||
isColSelected || cellSelection->isCellSelected(info.row, col);
|
isColSelected || cellSelection->isCellSelected(info.row, col);
|
||||||
QColor tmpCellColor = (isSelected) ? selectedCellColor : cellColor;
|
QColor tmpCellColor = (isSelected) ? selectedCellColor : cellColor;
|
||||||
|
@ -2677,6 +2654,7 @@ void CellArea::drawSoundTextColumn(QPainter &p, int r0, int r1, int col) {
|
||||||
// cell mark
|
// cell mark
|
||||||
drawCellMarker(p, info.markId, info.rect, true);
|
drawCellMarker(p, info.markId, info.rect, true);
|
||||||
|
|
||||||
|
bool heldFrame = (!o->isVerticalTimeline() && info.row != row);
|
||||||
drawFrameSeparator(p, info.row, col, false, heldFrame);
|
drawFrameSeparator(p, info.row, col, false, heldFrame);
|
||||||
|
|
||||||
if (TApp::instance()->getCurrentFrame()->isEditingScene() &&
|
if (TApp::instance()->getCurrentFrame()->isEditingScene() &&
|
||||||
|
@ -2820,13 +2798,6 @@ void CellArea::drawPaletteCell(QPainter &p, int row, int col,
|
||||||
|
|
||||||
bool sameLevel = prevCell.m_level.getPointer() == cell.m_level.getPointer();
|
bool sameLevel = prevCell.m_level.getPointer() == cell.m_level.getPointer();
|
||||||
|
|
||||||
int distance, offset;
|
|
||||||
TApp::instance()->getCurrentScene()->getScene()->getProperties()->getMarkers(
|
|
||||||
distance, offset);
|
|
||||||
// if (distance == 0) distance = 6;
|
|
||||||
bool isAfterMarkers =
|
|
||||||
distance > 0 && ((row - offset) % distance) == 0 && row != 0;
|
|
||||||
|
|
||||||
bool isRed = false;
|
bool isRed = false;
|
||||||
TXshPaletteLevel *pl = cell.getPaletteLevel();
|
TXshPaletteLevel *pl = cell.getPaletteLevel();
|
||||||
if (pl && !pl->getPalette()) isRed = true;
|
if (pl && !pl->getPalette()) isRed = true;
|
||||||
|
@ -2872,6 +2843,13 @@ void CellArea::drawPaletteCell(QPainter &p, int row, int col,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int distance, offset, secDistance;
|
||||||
|
TApp::instance()->getCurrentScene()->getScene()->getProperties()->getMarkers(
|
||||||
|
distance, offset, secDistance);
|
||||||
|
|
||||||
|
bool isAfterMarkers =
|
||||||
|
distance > 0 && ((row - offset) % distance) == 0 && row != 0;
|
||||||
|
|
||||||
bool heldFrame = (!o->isVerticalTimeline() && !isAfterMarkers && sameLevel &&
|
bool heldFrame = (!o->isVerticalTimeline() && !isAfterMarkers && sameLevel &&
|
||||||
prevCell.m_frameId == cell.m_frameId) &&
|
prevCell.m_frameId == cell.m_frameId) &&
|
||||||
!isImplicitCell;
|
!isImplicitCell;
|
||||||
|
@ -2952,11 +2930,6 @@ void CellArea::drawPaletteCell(QPainter &p, int row, int col,
|
||||||
cellColor);
|
cellColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (o->isVerticalTimeline() && isAfterMarkers) {
|
|
||||||
p.setPen(m_viewer->getMarkerLineColor());
|
|
||||||
p.drawLine(o->line(PredefinedLine::SEE_MARKER_THROUGH).translated(xy));
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((sameLevel && prevCell.m_frameId == cell.m_frameId && !isAfterMarkers) ||
|
if ((sameLevel && prevCell.m_frameId == cell.m_frameId && !isAfterMarkers) ||
|
||||||
isImplicitCell) { // cell equal to previous one (not on marker line):
|
isImplicitCell) { // cell equal to previous one (not on marker line):
|
||||||
// do not write anything and draw a vertical line
|
// do not write anything and draw a vertical line
|
||||||
|
|
|
@ -1181,12 +1181,12 @@ void XsheetViewer::wheelEvent(QWheelEvent *event) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int markerDistance = 0, markerOffset = 0;
|
int markerDistance = 0, markerOffset = 0, secDistance;
|
||||||
TApp::instance()
|
TApp::instance()
|
||||||
->getCurrentScene()
|
->getCurrentScene()
|
||||||
->getScene()
|
->getScene()
|
||||||
->getProperties()
|
->getProperties()
|
||||||
->getMarkers(markerDistance, markerOffset);
|
->getMarkers(markerDistance, markerOffset, secDistance);
|
||||||
|
|
||||||
if (event->angleDelta().x() == 0) { // vertical scroll
|
if (event->angleDelta().x() == 0) { // vertical scroll
|
||||||
if (!orientation()->isVerticalTimeline()) markerDistance = 1;
|
if (!orientation()->isVerticalTimeline()) markerDistance = 1;
|
||||||
|
|
|
@ -105,9 +105,9 @@ void RowArea::drawRows(QPainter &p, int r0, int r1) {
|
||||||
p.setFont(font);
|
p.setFont(font);
|
||||||
|
|
||||||
// marker interval
|
// marker interval
|
||||||
int distance, offset;
|
int distance, offset, secDistance;
|
||||||
TApp::instance()->getCurrentScene()->getScene()->getProperties()->getMarkers(
|
TApp::instance()->getCurrentScene()->getScene()->getProperties()->getMarkers(
|
||||||
distance, offset);
|
distance, offset, secDistance);
|
||||||
|
|
||||||
// default value
|
// default value
|
||||||
// if (distance == 0) distance = 6;
|
// if (distance == 0) distance = 6;
|
||||||
|
@ -130,9 +130,16 @@ void RowArea::drawRows(QPainter &p, int r0, int r1) {
|
||||||
//--- draw horizontal line
|
//--- draw horizontal line
|
||||||
bool isAfterMarkers =
|
bool isAfterMarkers =
|
||||||
(distance > 0 && ((r - offset) % distance) == 0 && r != 0);
|
(distance > 0 && ((r - offset) % distance) == 0 && r != 0);
|
||||||
QColor color = isAfterMarkers ? m_viewer->getMarkerLineColor()
|
bool isAfterSecMarkers =
|
||||||
: m_viewer->getLightLineColor();
|
secDistance > 0 && ((r - offset) % secDistance) == 0 && r != 0;
|
||||||
p.setPen(color);
|
|
||||||
|
QColor color = (isAfterSecMarkers || isAfterMarkers)
|
||||||
|
? m_viewer->getMarkerLineColor()
|
||||||
|
: m_viewer->getLightLineColor();
|
||||||
|
|
||||||
|
p.setPen(
|
||||||
|
QPen(color, (isAfterSecMarkers) ? 3. : 1., Qt::SolidLine, Qt::FlatCap));
|
||||||
|
// p.setPen(color);
|
||||||
QLine horizontalLine = o->horizontalLine(frameAxis, layerSide);
|
QLine horizontalLine = o->horizontalLine(frameAxis, layerSide);
|
||||||
if (!o->isVerticalTimeline()) {
|
if (!o->isVerticalTimeline()) {
|
||||||
int x = horizontalLine.x1();
|
int x = horizontalLine.x1();
|
||||||
|
|
|
@ -580,6 +580,8 @@ void Preferences::definePreferenceItems() {
|
||||||
define(showColumnNumbers, "showColumnNumbers", QMetaType::Bool, false);
|
define(showColumnNumbers, "showColumnNumbers", QMetaType::Bool, false);
|
||||||
define(parentColorsInXsheetColumn, "parentColorsInXsheetColumn",
|
define(parentColorsInXsheetColumn, "parentColorsInXsheetColumn",
|
||||||
QMetaType::Bool, true);
|
QMetaType::Bool, true);
|
||||||
|
define(highlightLineEverySecond, "highlightLineEverySecond", QMetaType::Bool,
|
||||||
|
false);
|
||||||
define(syncLevelRenumberWithXsheet, "syncLevelRenumberWithXsheet",
|
define(syncLevelRenumberWithXsheet, "syncLevelRenumberWithXsheet",
|
||||||
QMetaType::Bool, true);
|
QMetaType::Bool, true);
|
||||||
define(currentTimelineEnabled, "currentTimelineEnabled", QMetaType::Bool,
|
define(currentTimelineEnabled, "currentTimelineEnabled", QMetaType::Bool,
|
||||||
|
|
|
@ -133,6 +133,19 @@ void TSceneProperties::setBgColor(const TPixel32 &color) { m_bgColor = color; }
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void TSceneProperties::getMarkers(int &distance, int &offset,
|
||||||
|
int &secDistance) const {
|
||||||
|
distance = m_markerDistance;
|
||||||
|
offset = m_markerOffset;
|
||||||
|
// TODO: handle drop frame when the fps has decimal part
|
||||||
|
secDistance =
|
||||||
|
(Preferences::instance()->getBoolValue(highlightLineEverySecond))
|
||||||
|
? (int)std::round(getOutputProperties()->getFrameRate())
|
||||||
|
: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void TSceneProperties::setMarkers(int distance, int offset) {
|
void TSceneProperties::setMarkers(int distance, int offset) {
|
||||||
m_markerDistance = distance;
|
m_markerDistance = distance;
|
||||||
m_markerOffset = offset;
|
m_markerOffset = offset;
|
||||||
|
|
|
@ -373,9 +373,9 @@ void FunctionViewer::refreshModel() {
|
||||||
|
|
||||||
m_treeView->setCurrentScenePath(scenePath);
|
m_treeView->setCurrentScenePath(scenePath);
|
||||||
|
|
||||||
int distance, offset;
|
int distance, offset, secDistance;
|
||||||
scene->getProperties()->getMarkers(distance, offset);
|
scene->getProperties()->getMarkers(distance, offset, secDistance);
|
||||||
m_numericalColumns->setMarkRow(distance, offset);
|
m_numericalColumns->setMarkRow(distance, offset, secDistance);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_treeView->updateAll();
|
m_treeView->updateAll();
|
||||||
|
|
|
@ -382,7 +382,8 @@ void RowPanel::drawRows(QPainter &p, int r0, int r1) {
|
||||||
for (r = r0; r <= r1; r++) {
|
for (r = r0; r <= r1; r++) {
|
||||||
int next_y = getViewer()->rowToY(r + 1);
|
int next_y = getViewer()->rowToY(r + 1);
|
||||||
// draw horizontal line
|
// draw horizontal line
|
||||||
QColor color = (getViewer()->isMarkRow(r))
|
bool isMarkSecRow = getViewer()->isMarkSecRow(r);
|
||||||
|
QColor color = (isMarkSecRow || getViewer()->isMarkRow(r))
|
||||||
? getViewer()->getMarkerLineColor()
|
? getViewer()->getMarkerLineColor()
|
||||||
: getViewer()->getLightLineColor();
|
: getViewer()->getLightLineColor();
|
||||||
p.setPen(color);
|
p.setPen(color);
|
||||||
|
@ -401,11 +402,6 @@ void RowPanel::drawRows(QPainter &p, int r0, int r1) {
|
||||||
Qt::AlignVCenter | Qt::AlignRight, number);
|
Qt::AlignVCenter | Qt::AlignRight, number);
|
||||||
y = next_y;
|
y = next_y;
|
||||||
}
|
}
|
||||||
// erase the marker interval at upper-end
|
|
||||||
if (r0 == 0) {
|
|
||||||
p.setPen(getViewer()->getLightLineColor());
|
|
||||||
p.drawLine(x0, getViewer()->rowToY(0), x1, getViewer()->rowToY(0));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -499,15 +495,15 @@ void CellPanel::paintEvent(QPaintEvent *e) {
|
||||||
// draw rows
|
// draw rows
|
||||||
int currentRow = getViewer()->getCurrentRow();
|
int currentRow = getViewer()->getCurrentRow();
|
||||||
for (int r = r0; r <= r1; r++) {
|
for (int r = r0; r <= r1; r++) {
|
||||||
int y = getViewer()->rowToY(r);
|
int y = getViewer()->rowToY(r);
|
||||||
QColor color = getViewer()->isMarkRow(r) ? getViewer()->getMarkerLineColor()
|
bool isMarkSecRow = getViewer()->isMarkSecRow(r);
|
||||||
: getViewer()->getLightLineColor();
|
QColor color = (isMarkSecRow || getViewer()->isMarkRow(r))
|
||||||
painter.setPen(color);
|
? getViewer()->getMarkerLineColor()
|
||||||
|
: getViewer()->getLightLineColor();
|
||||||
|
painter.setPen(
|
||||||
|
QPen(color, (isMarkSecRow) ? 3. : 1., Qt::SolidLine, Qt::FlatCap));
|
||||||
painter.drawLine(x0, y, x1, y);
|
painter.drawLine(x0, y, x1, y);
|
||||||
}
|
}
|
||||||
// erase the marker interval at upper-end
|
|
||||||
painter.setPen(getViewer()->getLightLineColor());
|
|
||||||
painter.drawLine(x0, 0, x1, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Spreadsheet
|
} // namespace Spreadsheet
|
||||||
|
@ -531,6 +527,7 @@ SpreadsheetViewer::SpreadsheetViewer(QWidget *parent)
|
||||||
, m_currentRow(0)
|
, m_currentRow(0)
|
||||||
, m_markRowDistance(6)
|
, m_markRowDistance(6)
|
||||||
, m_markRowOffset(0)
|
, m_markRowOffset(0)
|
||||||
|
, m_markSecRowDistance(-1)
|
||||||
, m_isComputingSize(false)
|
, m_isComputingSize(false)
|
||||||
, m_frameScroller() {
|
, m_frameScroller() {
|
||||||
// m_orientation = Orientations::topToBottom ();
|
// m_orientation = Orientations::topToBottom ();
|
||||||
|
|
Loading…
Reference in a new issue