OdysseyDecomp/lib/al/Library/Screen/ScreenFunction.h
Narr the Reg b30105638f
Some checks are pending
Compile and verify functions / compile_verify (push) Waiting to run
Copy headers to separate repo / copy_headers (push) Waiting to run
decomp-dev / publish_progress_decomp_dev (1.0) (push) Waiting to run
lint / clang-format (push) Waiting to run
lint / custom-lint (push) Waiting to run
Check and verify that setup works on NixOS / nixos_verify (push) Waiting to run
progress / publish_progress (push) Waiting to run
testcompile / test_compile (push) Waiting to run
Trigger full-sync on the tracker repo on push / api-trigger-workflow (push) Waiting to run
all: Fix headers (#1091)
2026-04-23 10:42:13 +02:00

133 lines
7.3 KiB
C++

#pragma once
#include <basis/seadTypes.h>
#include <common/aglRenderBuffer.h>
#include <container/seadPtrArray.h>
#include <gfx/seadCamera.h>
#include <math/seadMatrix.h>
#include <math/seadVector.h>
#include "Library/Camera/IUseCamera.h"
#include "Library/HostIO/HioNode.h"
namespace al {
class SceneCameraInfo;
class ScreenCapture;
class ScreenCaptureExecutor : public HioNode {
public:
ScreenCaptureExecutor(s32);
~ScreenCaptureExecutor();
void createScreenCapture(s32, s32, s32);
void draw(agl::DrawContext*, const agl::RenderBuffer*, s32) const;
void tryCapture(agl::DrawContext*, const agl::RenderBuffer*, s32);
void tryCaptureAndDraw(agl::DrawContext*, const agl::RenderBuffer*, s32);
void requestCapture(bool, s32);
void onDraw(s32 screenCaptureIndex);
void offDraw(s32 screenCaptureIndex);
void offDraw();
bool isDraw(s32) const;
private:
sead::PtrArray<ScreenCapture> mArray;
bool mIsCaptured;
};
u32 getDisplayWidth();
u32 getDisplayHeight();
u32 getLayoutDisplayWidth();
u32 getLayoutDisplayHeight();
u32 getVirtualDisplayWidth();
u32 getVirtualDisplayHeight();
u32 getSubDisplayWidth();
u32 getSubDisplayHeight();
bool isInScreen(const sead::Vector2f&, f32);
bool calcWorldPosFromScreen(sead::Vector3f* output, const sead::Vector2f&, const sead::Matrix34f&,
f32); // Always returns true
void calcWorldPosFromScreenPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
f32);
void calcWorldPosFromScreenPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
const sead::Vector3f&);
void calcWorldPosFromScreenPos(sead::Vector3f* output, const SceneCameraInfo*,
const sead::Vector2f&, f32, s32);
void calcWorldPosFromScreenPos(sead::Vector3f* output, const SceneCameraInfo*,
const sead::Vector2f&, const sead::Vector3f&, s32);
void calcWorldPosFromScreenPosSub(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
f32);
void calcWorldPosFromScreenPosSub(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
const sead::Vector3f&);
void calcWorldPosFromLayoutPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
f32);
void calcWorldPosFromLayoutPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
const sead::Vector3f&);
void calcWorldPosFromLayoutPos(sead::Vector3f* output, const SceneCameraInfo*,
const sead::Vector2f&, s32, s32);
void calcWorldPosFromLayoutPos(sead::Vector3f* output, const SceneCameraInfo*,
const sead::Vector2f&, const sead::Vector3f&, s32);
void calcWorldPosFromLayoutPosSub(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
f32);
void calcWorldPosFromLayoutPosSub(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
const sead::Vector3f&);
void calcScreenPosFromWorldPos(sead::Vector2f* output, const IUseCamera*, const sead::Vector3f&);
void calcScreenPosFromWorldPosSub(sead::Vector2f* output, const IUseCamera*, const sead::Vector3f&);
void calcScreenPosFromLayoutPos(sead::Vector2f* output, const sead::Vector2f&);
f32 calcScreenRadiusFromWorldRadius(const sead::Vector3f&, const IUseCamera*, f32);
f32 calcScreenRadiusFromWorldRadiusSub(const sead::Vector3f&, const IUseCamera*, f32);
void calcLayoutPosFromScreenPos(sead::Vector2f* output, const sead::Vector2f&);
void calcLayoutPosFromWorldPos(sead::Vector2f* output, const IUseCamera*, const sead::Vector3f&);
void calcLayoutPosFromWorldPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector3f&);
void calcLayoutPosFromWorldPos(sead::Vector2f* output, const SceneCameraInfo*,
const sead::Vector3f&, s32);
void calcLayoutPosFromWorldPos(sead::Vector3f* output, const SceneCameraInfo*,
const sead::Vector3f&, s32);
void calcLayoutPosFromWorldPosSub(sead::Vector2f* output, const IUseCamera*, const sead::Vector3f&);
void calcLayoutPosFromWorldPosWithClampOutRange(sead::Vector3f* output, const IUseCamera*,
const sead::Vector3f&, f32, s32);
void calcLayoutPosFromWorldPosWithClampOutRange(sead::Vector3f* output, const SceneCameraInfo*,
const sead::Vector3f&, f32, s32);
void calcLayoutPosFromWorldPosWithClampByScreen(sead::Vector3f* output, const IUseCamera*,
const sead::Vector3f&);
f32 calcLayoutRadiusFromWorldRadius(const sead::Vector3f&, const IUseCamera*, f32);
bool calcCameraPosToWorldPosDirFromScreenPos(sead::Vector3f* output, const IUseCamera*,
const sead::Vector2f&, f32);
bool calcCameraPosToWorldPosDirFromScreenPos(sead::Vector3f* output, const IUseCamera*,
const sead::Vector2f&, const sead::Vector3f&);
bool calcCameraPosToWorldPosDirFromScreenPos(sead::Vector3f* output, const SceneCameraInfo*,
const sead::Vector2f&, f32, s32);
bool calcCameraPosToWorldPosDirFromScreenPos(sead::Vector3f* output, const SceneCameraInfo*,
const sead::Vector2f&, const sead::Vector3f&, s32);
void calcCameraPosToWorldPosDirFromScreenPosSub(sead::Vector3f* output, const IUseCamera*,
const sead::Vector2f&, f32);
void calcCameraPosToWorldPosDirFromScreenPosSub(sead::Vector3f* output, const IUseCamera*,
const sead::Vector2f&, const sead::Vector3f&);
void calcLineCameraToWorldPosFromScreenPos(sead::Vector3f* output1, sead::Vector3f* output2,
const IUseCamera*, const sead::Vector2f&);
void calcLineCameraToWorldPosFromScreenPos(sead::Vector3f* output1, sead::Vector3f* output2,
const IUseCamera*, const sead::Vector2f&, f32, f32);
void calcLineCameraToWorldPosFromScreenPos(sead::Vector3f* output1, sead::Vector3f* output2,
const SceneCameraInfo*, const sead::Vector2f&, s32);
void calcLineCameraToWorldPosFromScreenPos(sead::Vector3f* output1, sead::Vector3f* output2,
const SceneCameraInfo*, const sead::Vector2f&, f32, f32,
s32);
void calcLineCameraToWorldPosFromScreenPosSub(sead::Vector3f* output1, sead::Vector3f* output2,
const IUseCamera*, const sead::Vector2f&);
void calcLineCameraToWorldPosFromScreenPosSub(sead::Vector3f* output1, sead::Vector3f* output2,
const IUseCamera*, const sead::Vector2f&, f32, f32);
} // namespace al
namespace ScreenFunction {
void calcWorldPositionFromCenterScreen(sead::Vector3f*, const sead::Vector2f&,
const sead::Vector3f&, const sead::Camera&,
const sead::Projection&, const sead::Viewport&);
} // namespace ScreenFunction