Changes

HotSpotting (Plugin)

4,808 bytes added, 15:16, 28 May 2018
Created page with "==Overview== This Plugin is designed to enable the work with HotSpots and Annotations on the server side. ==Usage== The Plugin exposes several methods through the classes ''A..."
==Overview==
This Plugin is designed to enable the work with HotSpots and Annotations on the server side.

==Usage==
The Plugin exposes several methods through the classes ''Annotating'' and "HotSpotting" that can be used in {{UBIK}} customizing code.

= Annotating =
Example script for the {{UBIK}} [[Debugger|Whobert]] that shows the basic capabilities of the Plugin.

<source lang="csharp">

using System;
using System.Windows.Forms;
using UBIK.Kernel;
using UBIK.Compiler;
using System.Linq;
using UBIK.Module.HotSpotting.Module;
using UBIK.WinX.HotSpotting.Models;
using UBIK.WinX.HotSpotting.Common;

namespace Studio
{
public class ObjectTest
{
public void TestObject (params BaseClass[] InVariables)
{
BaseClass obj = InVariables[0];
UBIK.Document.DocumentClass sourcedoc = obj.Environment.UBIKDataFactory().ContentObject(new Guid("a847ab9f-1e4c-42ed-933f-833fb8d69b5e")) as UBIK.Document.DocumentClass;

var annotating = new Annotating();
//Load the Inking imformation from the UBIK document
InkingLayer[] ann = annotating.Load(sourcedoc);

//If we have an Image, merge trhe inking directly into the picture
if(annotating.GetAnnotationFileType(sourcedoc) == Annotating.AnnotationFileTypes.Image)
{
if(annotating.UpdateRedline(ann, sourcedoc))
{
annotating.Delete(sourcedoc);
//sourcedoc.MP_CREATE_PDF = false;
sourcedoc.Save();
}
}
//If we have a pdf, create a subdocument (redline) first and merge the inking into the version rather than the original
else if(annotating.GetAnnotationFileType(sourcedoc) == Annotating.AnnotationFileTypes.PdfDocument)
{
if(annotating.CreateRedline(ann, sourcedoc, "REL_FILEDOC_REDLINEDOC"))
{
//sourcedoc.MP_CREATE_PDF = false;
sourcedoc.Save();
}
}

Debugger.Output(this, "*** Finished");
}
}
}
</source>

= HotSpotting =
Example script for the {{UBIK}} [[Debugger|Whobert]] that shows the creation of LinkSpots (Cross-references) between documents.

<source lang="csharp">
using System;
using System.Windows.Forms;
using UBIK.Kernel;
using UBIK.Compiler;
using System.Linq;
using UBIK.Module.HotSpotting.Module;
using UBIK.WinX.HotSpotting.Models;
using UBIK.WinX.HotSpotting.Common;

namespace Studio
{
public class ObjectTest
{
public void TestObject (params BaseClass[] InVariables)
{
Debugger.Output(this, "*** Started");

//HotSpots with the same ID will be highlighted on the target
Guid sameID = Guid.NewGuid();

BaseClass obj = InVariables[0];


//Get our Source document
var sourcedoc = obj.Environment.UBIKDataFactory().ContentObject(new Guid("3451ed94-b8b2-4459-a7e9-60f041868294"));
var hotspotting = new HotSpotting();

//Create a new Layer
HotSpottingLayer sourcelayer = new HotSpottingLayer(null);
//Set the page of the document where the hs should appear
//ATTENTION: counting starts with 1 since this is already the natural page number
sourcelayer.Page = 1;

//Create a new LinkHotSpot
LinkHotSpot sourcehs = new LinkHotSpot(null)
{
//Position it on the document
X = 100,
Y = 100,
Width = 256,
Height = 256,

//Set its value to the UID of the target document
Value = new Guid("60ab6606-9de1-4f0c-ab15-f1dfc31f421c"),

//Set its ID to the same id as the target HotSpot
//which enables focussing and highlighting
ID = sameID,

//Assign a unique ID
UID = Guid.NewGuid(),

//Give it an optional label
Label = "TestLink",

//Give it a shape (default is round)
Shape = HotSpotShape.Angular
};
sourcelayer.AddHotSpot(sourcehs);
//Save the layer to the document
hotspotting.Save(sourcedoc, new HotSpottingLayer[] { sourcelayer });

//Save the document
sourcedoc.Save();

//If we only create the source HS, navigation is a one way street;
//if we want to navigate back we also need to create the other direction
//which means in this case, do the same but vice versa
HotSpottingLayer targetlayer = new HotSpottingLayer(null);
targetlayer.Page = 1;
var targetdoc = obj.Environment.UBIKDataFactory().ContentObject(new Guid("60ab6606-9de1-4f0c-ab15-f1dfc31f421c"));
LinkHotSpot targeths = new UBIK.WinX.HotSpotting.Models.LinkHotSpot(null)
{
X = 100,
Y = 100,
Width = 128,
Height = 128,
Value = new Guid("3451ed94-b8b2-4459-a7e9-60f041868294"),
ID = sameID,
UID = Guid.NewGuid(),
Label = "TestLinkBack",
Shape = HotSpotShape.Round
};
targetlayer.AddHotSpot(targeths);
hotspotting.Save(targetdoc, new HotSpottingLayer[] { targetlayer });
targetdoc.Save();

Debugger.Output(this, "*** Finished");
}
}
}
</source>

<headertabs/>