from __future__ import annotations
from typing import Any, Protocol, runtime_checkable
from com.sun.star.uno import XInterface

@runtime_checkable
class XGraphics(XInterface, Protocol):
    def getDevice(self) -> XDevice: ...
    def getFontMetric(self) -> SimpleFontMetric: ...
    def setFont(self, xNewFont: XFont) -> None: ...
    def selectFont(self, aDescription: FontDescriptor) -> None: ...
    def setTextColor(self, nColor: Color) -> None: ...
    def setTextFillColor(self, nColor: Color) -> None: ...
    def setLineColor(self, nColor: Color) -> None: ...
    def setFillColor(self, nColor: Color) -> None: ...
    def setRasterOp(self, ROP: RasterOperation) -> None: ...
    def setClipRegion(self, Clipping: XRegion) -> None: ...
    def intersectClipRegion(self, xClipping: XRegion) -> None: ...
    def push(self) -> None: ...
    def pop(self) -> None: ...
    def copy(self, xSource: XDevice, nSourceX: int, nSourceY: int, nSourceWidth: int, nSourceHeight: int, nDestX: int, nDestY: int, nDestWidth: int, nDestHeight: int) -> None: ...
    def draw(self, xBitmapHandle: XDisplayBitmap, SourceX: int, SourceY: int, SourceWidth: int, SourceHeight: int, DestX: int, DestY: int, DestWidth: int, DestHeight: int) -> None: ...
    def drawPixel(self, X: int, Y: int) -> None: ...
    def drawLine(self, X1: int, Y1: int, X2: int, Y2: int) -> None: ...
    def drawRect(self, X: int, Y: int, Width: int, Height: int) -> None: ...
    def drawRoundedRect(self, X: int, Y: int, Width: int, Height: int, nHorzRound: int, nVertRound: int) -> None: ...
    def drawPolyLine(self, DataX: sequence<long>, DataY: sequence<long>) -> None: ...
    def drawPolygon(self, DataX: sequence<long>, DataY: sequence<long>) -> None: ...
    def drawPolyPolygon(self, DataX: sequence< sequence<long> >, DataY: sequence< sequence<long> >) -> None: ...
    def drawEllipse(self, X: int, Y: int, Width: int, Height: int) -> None: ...
    def drawArc(self, X: int, Y: int, Width: int, Height: int, X1: int, Y1: int, X2: int, Y2: int) -> None: ...
    def drawPie(self, X: int, Y: int, Width: int, Height: int, X1: int, Y1: int, X2: int, Y2: int) -> None: ...
    def drawChord(self, nX: int, nY: int, nWidth: int, nHeight: int, nX1: int, nY1: int, nX2: int, nY2: int) -> None: ...
    def drawGradient(self, nX: int, nY: int, nWidth: int, Height: int, aGradient: Gradient) -> None: ...
    def drawText(self, X: int, Y: int, Text: str) -> None: ...
    def drawTextArray(self, X: int, Y: int, Text: str, Longs: sequence<long>) -> None: ...
