mirror of
https://github.com/opensim/opensim.git
synced 2026-07-31 05:45:37 +08:00
From: Christopher Yeoh <yeohc@au1.ibm.com>
The attached patch implements osGetDrawStringSize that looks like: vector osGetDrawStringSize(string contentType, string text, string fontName, int fontSize) in LSL. It is meant to be used in conjunction with the osDraw* functions. It returns accurate information on the size that a given string will be rendered given the specified font and font size. This allows for nicely formatted and positioned text on the generated image.
This commit is contained in:
@@ -677,6 +677,24 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
return drawList;
|
||||
}
|
||||
|
||||
public LSL_Vector osGetDrawStringSize(string contentType, string text, string fontName, int fontSize)
|
||||
{
|
||||
CheckThreatLevel(ThreatLevel.VeryLow, "osGetDrawStringSize");
|
||||
m_host.AddScriptLPS(1);
|
||||
|
||||
LSL_Vector vec = new LSL_Vector(0,0,0);
|
||||
IDynamicTextureManager textureManager = World.RequestModuleInterface<IDynamicTextureManager>();
|
||||
if (textureManager != null)
|
||||
{
|
||||
double xSize, ySize;
|
||||
textureManager.GetDrawStringSize(contentType, text, fontName, fontSize,
|
||||
out xSize, out ySize);
|
||||
vec.x = xSize;
|
||||
vec.y = ySize;
|
||||
}
|
||||
return vec;
|
||||
}
|
||||
|
||||
public void osSetStateEvents(int events)
|
||||
{
|
||||
// This function is a hack. There is no reason for it's existence
|
||||
|
||||
@@ -88,6 +88,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||
string osSetPenSize(string drawList, int penSize);
|
||||
string osSetPenColour(string drawList, string colour);
|
||||
string osDrawImage(string drawList, int width, int height, string imageUrl);
|
||||
vector osGetDrawStringSize(string contentType, string text, string fontName, int fontSize);
|
||||
void osSetStateEvents(int events);
|
||||
|
||||
double osList2Double(LSL_Types.list src, int index);
|
||||
|
||||
@@ -212,6 +212,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||
{
|
||||
return m_OSSL_Functions.osDrawImage(drawList, width, height, imageUrl);
|
||||
}
|
||||
|
||||
public vector osGetDrawStringSize(string contentType, string text, string fontName, int fontSize)
|
||||
{
|
||||
return m_OSSL_Functions.osGetDrawStringSize(contentType, text, fontName, fontSize);
|
||||
}
|
||||
|
||||
public void osSetStateEvents(int events)
|
||||
{
|
||||
m_OSSL_Functions.osSetStateEvents(events);
|
||||
|
||||
Reference in New Issue
Block a user