Lớp đại diện cho thao tác nhấn chuột, bắt đầu cho một chuỗi ChangeShape hoặc AddShape.
#include <mousepress.hh> Sơ đồ kế thừa cho MousePress:
MousePress PaintOperation
Các hàm thành viên Public
• MousePress () Phương thức khởi tạo.
• qint32 type () const override Kiểu của thao tác vẽ
• QRectF operate (QPainter &) const override Thực hiện thao tác.
• void save (QDataStream &) const override Lưu trạng thái của thao tác vẽ vào stream.
• void load (QDataStream &) override Đọc dữ liệu cho thao tác vẽ từ stream.
Các hàm Static Public
• static void setChangedPart (QSharedPointer< QImage > const &pointer) Thay đối giá trị của changedPart.
• static void setLastTopLef (QSharedPointer< QPointF > const &pointer) Thay đổi giá trị của lastTopLef.
Các thuộc tính Static Public
• static const qint32 Type = 8 Kiểu của thao tác.
Các kiểu Private
• typedef QThreadStorage
< QSharedPointer< QImage >> TPImage
typedef cho QThreadStorage<QSharedPointer<QImage>>
• typedef QThreadStorage
< QSharedPointer< QPointF >> TPPointF typedef cho
QThreadStorage<QSharedPointer<QPointF>>
Các thuộc tính Static Private
• static TPImage changedPart
Một phần của bức vẽ đã bị thay đổi bởi thao tác vẽ trước đó.
• static TPPointF lastTopLef
Điểm góc trên bên trái của phần bị thay đổi.
3.13.1 Mô tả chi tiết
Lớp đại diện cho thao tác nhấn chuột, bắt đầu cho một chuỗi ChangeShape hoặc AddShape.
Với một chuỗi ChangeShape, khi bắt đầu thao tác đầu tiên của chuỗi (tương ứng với việc người dùng nhấn chuột) thì các thành viên tĩnh ChangeShape::changedPart và ChangeShape::lastTopLef (vốn được chia sẽ cho tất cả các đối tượng ChangeShape thuộc cùng một Player) giữ giá trị của thao tác ChangeShape cuối cùng của chuỗi trước đó. Thực hiện thao tác ChangeShape đầu tiên của chuỗi mới sẽ vẽ lại changedPart này lên thiết bị vẽ, có thể làm sai kết quả. Thao tác MousePress thực hiện trước mỗi chuỗi ChangeShape có nhiệm vụ "làm sạch" các giá trị này (cụ thể là changedPart sẽ được đưa về một QImage rỗng).
Ngoài ra, một thao tác MousePress sẽ giúp nhận biết được tiếp theo sẽ là một chuỗi các thao tác ChangeShape hoặc AddShape mới. Điều này có tác dụng trong việc phân nhóm các thao tác thành 1
"thao tác có ích" (OpPair::effOp) Xem thêm
ChangeShape, AddShape, Player
Định nghĩa tại dòng 50 trong file mousepress.hh.
3.13.2 Thông tin về hàm thành viên
3.13.2.1 void MousePress::load ( QDataStream & stream ) [override], [virtual]
Đọc dữ liệu cho thao tác vẽ từ stream.
Thực chất phương thức này không làm gì. Type sẽ được đọc trước đó để xác định kiểu của thao tác vẽ.
Các tham số
stream luồng dữ liệu vào Xem thêm save (QDataStream &)
Thực hiện PaintOperation.
Định nghĩa tại dòng 68 trong file mousepress.cc.
3.13.2.2 QRectF MousePress::operate ( QPainter & painter ) const [override], [virtual]
Thực hiện thao tác.
"Làm sạch" changedPart để bắt đầu cho một chuỗi ChangeShape Các tham số
painter đối tượng vẽ sẽ thao tác
Giá trị trả về
Vùng bức vẽ sẽ bị thay đổi sau khi thực hiện
Thực hiện PaintOperation.
Định nghĩa tại dòng 51 trong file mousepress.cc.
3.13.2.3 void MousePress::save ( QDataStream & stream ) const [virtual]
Lưu trạng thái của thao tác vẽ vào stream.
Ghi Type vào stream.
Các tham số [override],
stream luồng dữ liệu ra Xem thêm load (QDataStream &)
Thực hiện PaintOperation.
Định nghĩa tại dòng 79 trong file mousepress.cc.
3.13.2.4 static void MousePress::setChangedPart ( QSharedPointer< QImage > const
& pointer ) [inline], [static]
Thay đối giá trị của changedPart.
Các tham số
pointer giá trị mới Xem thêm
changedPart
Định nghĩa tại dòng 128 trong file mousepress.hh.
3.13.2.5 static void MousePress::setLastTopLeft ( QSharedPointer< QPointF > const &
pointer ) [inline], [static]
Thay đổi giá trị của lastTopLef.
Các tham số
pointer giá trị mới Xem thêm
lastTopLef
Định nghĩa tại dòng 137 trong file mousepress.hh.
3.13.2.6 qint32 MousePress::type ( ) const [inline], [override], [virtual]
Kiểu của thao tác vẽ Thực chất trả về Type Giá trị trả về
qint32 kiểu của thao tác Xem thêm
Type
Thực hiện PaintOperation.
Định nghĩa tại dòng 76 trong file mousepress.hh.
3.13.3 Thông tin về Member Data
3.13.3.1 MousePress::TPImage MousePress::changedPart [static], [private]
Một phần của bức vẽ đã bị thay đổi bởi thao tác vẽ trước đó.
Được chia sẻ cho tất cả các đối tượng kiểu ChangeShape và MousePress thuộc cùng một Player.
Xem thêm
ChangeShape::changedPart, Player::changedPart
Định nghĩa tại dòng 109 trong file mousepress.hh.
3.13.3.2 MousePress::TPPointF MousePress::lastTopLeft [static], [private]
Điểm góc trên bên trái của phần bị thay đổi.
Được chia sẻ cho tất cả các đối tượng kiểu ChangeShape và MousePress thuộc cùng một Player.
Xem thêm
ChangeShape::lastTopLef, Player::lastTopLef
Định nghĩa tại dòng 117 trong file mousepress.hh.
Thông tin cho class được biên soạn từ các file sau đây:
• src/paintoperation/mousepress.hh
• src/paintoperation/mousepress.cc