Files
Test/Library/PackageCache/com.unity.collab-proxy@4628d2ba6ea4/Editor/CodeEditor/Rendering/Layer.cs
T
2026-11-01 23:39:55 +02:00

81 lines
3.0 KiB
C#

// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using UnityEngine;
using UnityEngine.UIElements;
using Debug = System.Diagnostics.Debug;
namespace Unity.CodeEditor.Rendering
{
/// <summary>
/// Base class for known layers.
/// </summary>
internal class Layer : VisualElement
{
protected readonly TextView TextView;
protected readonly KnownLayer KnownLayer;
LayerPosition _Position;
readonly IMGUIContainer _backgroundIMGUIContainer;
internal Layer(TextView textView, KnownLayer knownLayer)
{
Debug.Assert(textView != null);
TextView = textView;
KnownLayer = knownLayer;
pickingMode = PickingMode.Ignore;
style.position = Position.Absolute;
style.left = 0;
style.top = 0;
style.right = 0;
style.bottom = 0; //
_backgroundIMGUIContainer = new IMGUIContainer(OnBackgroundGUI);
_backgroundIMGUIContainer.pickingMode = PickingMode.Ignore;
_backgroundIMGUIContainer.focusable = false;
_backgroundIMGUIContainer.style.position = Position.Absolute;
_backgroundIMGUIContainer.style.left = 0;
_backgroundIMGUIContainer.style.top = 0;
_backgroundIMGUIContainer.style.right = 0;
_backgroundIMGUIContainer.style.bottom = 0;
Add(_backgroundIMGUIContainer);
}
internal LayerPosition LayerPosition
{
get { return _Position; }
set { _Position = value; }
}
internal void InvalidateBackground()
{
_backgroundIMGUIContainer.MarkDirtyRepaint();
}
void OnBackgroundGUI()
{
if (Event.current.type != EventType.Repaint)
return;
if (!TextView.VisualLinesValid)
return;
TextView.RenderBackground(KnownLayer, _backgroundIMGUIContainer.contentRect);
}
}
}