#include "DisplayCommon.h"
void DisplayDefaultAnimationValues(
FbxCamera* pCamera);
 
void DisplayRenderOptions(
FbxCamera* pCamera);
 
void DisplayCameraViewOptions(
FbxCamera* pCamera);
 
void DisplayBackgroundProperties(
FbxCamera* pCamera);
 
void DisplayApertureAndFilmControls(
FbxCamera* pCamera);
 
void DisplayViewingAreaControls(
FbxCamera* pCamera);
 
{
}
{
    DisplayString("Camera Name: ", pName);
    if (!pCamera)
    {
        DisplayString("NOT FOUND");
        return;
    }
    DisplayMetaDataConnections(pCamera);
    DisplayCameraPositionAndOrientation(pCamera, pTargetNode, pTargetUpNode);
    const char* lProjectionTypes[] = { "Perspective", "Orthogonal" };
    DisplayString(
"    Projection Type: ", lProjectionTypes[pCamera->
ProjectionType.
Get()]);
 
    DisplayViewingAreaControls(pCamera);
    
    
    {
        DisplayApertureAndFilmControls(pCamera);
    }
    DisplayBackgroundProperties(pCamera);
    DisplayCameraViewOptions(pCamera);
    DisplayRenderOptions(pCamera);
    DisplayDefaultAnimationValues(pCamera);
}
{
    DisplayString("    Camera Position and Orientation");
    Display3DVector(
"        Position: ", pCamera->
Position.Get());
 
    if (pTargetNode)
    {
        DisplayString(
"        Camera Interest: ",(
char *) pTargetNode->
GetName());
 
    }
    else
    {
        Display3DVector(
"        Default Camera Interest Position: ", pCamera->
InterestPosition.Get());
 
    }
    if (pTargetUpNode)
    {
        DisplayString(
"        Camera Up Target: ", (
char *) pTargetUpNode->
GetName());
 
    }
    else
    {
        Display3DVector(
"        Up Vector: ", pCamera->
UpVector.Get());
 
    }
    DisplayDouble(
"        Roll: ", pCamera->
Roll.
Get());
 
}
void DisplayViewingAreaControls(
FbxCamera* pCamera)
 
{
    DisplayString("    Viewing Area Controls");
    const char* lCameraFormat[] = { "Custom", "D1 NTSC", "NTSC", "PAL", "D1 PAL", 
        "HD", "640x480", "320x200", "320x240", "128x128",
        "Full Screen"  };
    DisplayString(
"        Format: ", lCameraFormat[pCamera->
GetFormat()]);
 
    const char* lAspectRatioModes[] = { "Window Size", "Fixed Ratio", "Fixed Resolution", 
        "Fixed Width", "Fixed Height" };
    
    {
    }
    DisplayDouble(
"        Far Plane: ", pCamera->
FarPlane.
Get());
 
}
void DisplayApertureAndFilmControls(
FbxCamera* pCamera)
 
{
    DisplayString("    Aperture and Film Controls");
    const char* lCameraApertureFormats[] = { "Custom", 
        "16mm Theatrical",
        "Super 16mm",
        "35mm Academy",
        "35mm TV Projection",
        "35mm Full Aperture",
        "35mm 1.85 Projection",
        "35mm Anamorphic",
        "70mm Projection",
        "VistaVision",
        "Dynavision",
        "Imax" };
    DisplayString(
"        Aperture Format: ", lCameraApertureFormats[pCamera->
GetApertureFormat()]);
 
    const char* lCameraApertureModes[] = { "Horizontal and Vertical", "Horizontal", "Vertical", "Focal Length" };
    DisplayString(
"        Aperture Mode: ", lCameraApertureModes[pCamera->
GetApertureMode()]);
 
    DisplayDouble(
"        Field of View: ", pCamera->
FieldOfView.
Get(), 
" degrees");
 
}
void DisplayBackgroundProperties(
FbxCamera* pCamera)
 
{
    DisplayString("    Background Properties");
    const char* lBackgroundDisplayModes[] = { "Disabled", "Always", "When Media" };
    
    {
    }
    {
        lBackgroundPlacementOptions += " Fit,";
    }
    {
        lBackgroundPlacementOptions += " Center,";
    }
    {
        lBackgroundPlacementOptions += " Keep Ratio,";
    }
    {
        lBackgroundPlacementOptions += " Crop,";
    }
    if (!lBackgroundPlacementOptions.
IsEmpty())
 
    {
        FbxString lString =  lBackgroundPlacementOptions.
Left(lBackgroundPlacementOptions.
GetLen() - 1);
 
        DisplayString(
"        Background Placement Options: ",lString.
Buffer());
 
    }
    const char* lCameraBackgroundDistanceModes[] = { "Relative to Interest", "Absolute from Camera" };
}
void DisplayCameraViewOptions(
FbxCamera* pCamera)
 
{
    DisplayString("    Camera View Options");
    const char* lSafeAreaStyles[] = { "Round", "Square" };
    DisplayColor("        Background Color: ", color);
    DisplayColor("        Audio Color: ", color);
    DisplayColor("        Frame Color: ", color);
}
void DisplayRenderOptions(
FbxCamera* pCamera)
 
{
    DisplayString("    Render Options");
    const char* lCameraRenderOptionsUsageTimes[] = { "Interactive", "At Render" };
    DisplayString(
"        Render Options Usage Time: ", lCameraRenderOptionsUsageTimes[pCamera->
UseRealTimeDOFAndAA.
Get()]);
 
    const char* lCameraAntialiasingMethods[] = { "Oversampling Antialiasing", "Hardware Antialiasing" };
    
    {
    }
    const char* lCameraSamplingTypes[] = { "Uniform", "Stochastic" };
    const char* lCameraFocusDistanceSources[] = { "Camera Interest", "Specific Distance" };
    DisplayString(
"        Focus Distance Source: ", lCameraFocusDistanceSources[pCamera->
FocusSource.
Get()]);
 
    
    {
    }
    DisplayDouble(
"        Focus Angle: ", pCamera->
FocusAngle.
Get(), 
" degrees");
 
}
void DisplayDefaultAnimationValues(
FbxCamera* pCamera)
 
{
    DisplayString("    Default Animation Values");
    DisplayDouble(
"        Default Field of View: ", pCamera->
FieldOfView.
Get());
 
    DisplayDouble(
"        Default Roll: ", pCamera->
Roll.
Get());
 
}