// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "Engine/Texture2D.h" #include #include "PlotCanvas.generated.h" /** * */ UCLASS(Blueprintable, BlueprintType) class IMMERSIVEANALYTICS_API UPlotCanvas : public UObject { GENERATED_BODY() public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Variables) UTexture2D* dynamicCanvas; UFUNCTION(BlueprintCallable, Category = DrawingTools) void InitializeCanvas(const int32 pixelsH, const int32 pixelsV); UFUNCTION(BlueprintCallable, Category = DrawingTools) void UpdateCanvas(); UFUNCTION(BlueprintCallable, Category = DrawingTools) void ClearCanvas(); UFUNCTION(BlueprintCallable, Category = DrawingTools) void InitializeDrawingTools(const int32 brushRadius, uint8 r, uint8 g, uint8 b); UFUNCTION(BlueprintCallable, Category = DrawingTools) void DrawFromData(); UFUNCTION(BlueprintCallable, Category = DrawingTools) void DrawDot(const int32 pixelCoordX, const int32 pixelCoordY); private: // canvas std::unique_ptr canvasPixelData; int canvasWidth; int canvasHeight; int bytesPerPixel; int bufferPitch; int bufferSize; // draw brush tool std::unique_ptr canvasBrushMask; int radius; int brushBufferSize; std::unique_ptr echoUpdateTextureRegion; void setPixelColor(uint8*& pointer, uint8 red, uint8 green, uint8 blue, uint8 alpha); };