/* * Copyright (C) 2015-2022 Département de l'Instruction Publique (DIP-SEM) * * Copyright (C) 2013 Open Education Foundation * * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour * l'Education Numérique en Afrique (GIP ENA) * * This file is part of OpenBoard. * * OpenBoard is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 3 of the License, * with a specific linking exception for the OpenSSL project's * "OpenSSL" library (or with modified versions of it that use the * same license as the "OpenSSL" library). * * OpenBoard is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenBoard. If not, see . */ #include "UBItem.h" #include "core/memcheck.h" #include "domain/UBGraphicsPixmapItem.h" #include "domain/UBGraphicsTextItem.h" #include "domain/UBGraphicsSvgItem.h" #include "domain/UBGraphicsMediaItem.h" #include "domain/UBGraphicsStrokesGroup.h" #include "domain/UBGraphicsGroupContainerItem.h" #include "domain/UBGraphicsWidgetItem.h" #include "domain/UBGraphicsScene.h" #include "tools/UBGraphicsCurtainItem.h" #include "domain/UBGraphicsItemDelegate.h" #include "domain/UBGraphicsLineItem.h" UBItem::UBItem() : mUuid(QUuid()) , mRenderingQuality(UBItem::RenderingQualityNormal) { // NOOP } UBItem::~UBItem() { // NOOP } UBGraphicsItem::~UBGraphicsItem() { if (mDelegate!=NULL) delete mDelegate; } void UBGraphicsItem::setDelegate(UBGraphicsItemDelegate* delegate) { Q_ASSERT(mDelegate==NULL); mDelegate = delegate; } UBGraphicsItemDelegate *UBGraphicsItem::Delegate() const { return mDelegate; } void UBGraphicsItem::assignZValue(QGraphicsItem *item, qreal value) { item->setZValue(value); item->setData(UBGraphicsItemData::ItemOwnZValue, value); } bool UBGraphicsItem::isFlippable(QGraphicsItem *item) { return item->data(UBGraphicsItemData::ItemFlippable).toBool(); } bool UBGraphicsItem::isRotatable(QGraphicsItem *item) { return item->data(UBGraphicsItemData::ItemRotatable).toBool(); } bool UBGraphicsItem::isLocked(QGraphicsItem *item) { return item->data(UBGraphicsItemData::ItemLocked).toBool(); } QUuid UBGraphicsItem::getOwnUuid(QGraphicsItem *item) { QString idCandidate = item->data(UBGraphicsItemData::ItemUuid).toString(); return idCandidate == QUuid().toString() ? QUuid() : QUuid(idCandidate); } void UBGraphicsItem::remove(bool canUndo) { if (Delegate()) Delegate()->remove(canUndo); } UBGraphicsItemDelegate *UBGraphicsItem::Delegate(QGraphicsItem *pItem) { UBGraphicsItemDelegate *result = 0; switch (static_cast(pItem->type())) { case UBGraphicsPixmapItem::Type : result = (static_cast(pItem))->Delegate(); break; case UBGraphicsTextItem::Type : result = (static_cast(pItem))->Delegate(); break; case UBGraphicsSvgItem::Type : result = (static_cast(pItem))->Delegate(); break; case UBGraphicsMediaItem::Type: case UBGraphicsVideoItem::Type: case UBGraphicsAudioItem::Type: result = (static_cast(pItem))->Delegate(); break; case UBGraphicsStrokesGroup::Type : result = (static_cast(pItem))->Delegate(); break; case UBGraphicsGroupContainerItem::Type : result = (static_cast(pItem))->Delegate(); break; case UBGraphicsWidgetItem::Type : result = (static_cast(pItem))->Delegate(); break; case UBGraphicsCurtainItem::Type : result = (static_cast(pItem))->Delegate(); break; case UBGraphicsLineItem::Type : result = (static_cast(pItem))->Delegate(); } return result; }