2015-06-16 01:18 PM - last edited on 2023-07-13 04:18 PM by Doreena Deng
2015-06-18 10:54 AM
short Create_HidddenLayer (void); // ----------------------------------------------------------------------------- // Hides an element with moving to a hidden layer // ----------------------------------------------------------------------------- GSErrCode Hide_Element (const API_Guid& guid) { API_Element element, mask; GSErrCode err = NoError; BNZeroMemory (&element, sizeof (API_Element)); element.header.guid = guid; err = ACAPI_Element_Get (&element); if (err != NoError) { WriteReport_Err ("ACAPI_Element_Get failed.", err); return err; } ACAPI_ELEMENT_MASK_CLEAR (mask); ACAPI_ELEMENT_MASK_SET (mask, API_Elem_Head, layer); element.header.layer = Create_HidddenLayer (); if (element.header.layer == -1) return Error; return ACAPI_Element_Change (&element, &mask, NULL, 0, true); } // ----------------------------------------------------------------------------- // Create a hidden layer // ----------------------------------------------------------------------------- short Create_HidddenLayer (void) { API_Attribute attrib; GSErrCode err = NoError; BNZeroMemory (&attrib, sizeof (API_Attribute)); attrib.header.typeID = API_LayerID; attrib.header.flags = APILay_Hidden; strcpy (attrib.header.name, "Example_HiddenLayer"); err = ACAPI_Attribute_Create (&attrib, NULL); if (err == APIERR_ATTREXIST) { WriteReport_Alert ("The layer already exists."); return attrib.header.index; } if (err != NoError) { WriteReport_Err ("Unable to create layer.", err); return -1; } return attrib.header.index; }
2015-06-19 09:42 AM
Tibor wrote:
Hi,
You can hide an element by moving that to a hidden layer.
Here is an example code for this:short Create_HidddenLayer (void); // ----------------------------------------------------------------------------- // Hides an element with moving to a hidden layer // ----------------------------------------------------------------------------- GSErrCode Hide_Element (const API_Guid& guid) { API_Element element, mask; GSErrCode err = NoError; BNZeroMemory (&element, sizeof (API_Element)); element.header.guid = guid; err = ACAPI_Element_Get (&element); if (err != NoError) { WriteReport_Err ("ACAPI_Element_Get failed.", err); return err; } ACAPI_ELEMENT_MASK_CLEAR (mask); ACAPI_ELEMENT_MASK_SET (mask, API_Elem_Head, layer); element.header.layer = Create_HidddenLayer (); if (element.header.layer == -1) return Error; return ACAPI_Element_Change (&element, &mask, NULL, 0, true); } // ----------------------------------------------------------------------------- // Create a hidden layer // ----------------------------------------------------------------------------- short Create_HidddenLayer (void) { API_Attribute attrib; GSErrCode err = NoError; BNZeroMemory (&attrib, sizeof (API_Attribute)); attrib.header.typeID = API_LayerID; attrib.header.flags = APILay_Hidden; strcpy (attrib.header.name, "Example_HiddenLayer"); err = ACAPI_Attribute_Create (&attrib, NULL); if (err == APIERR_ATTREXIST) { WriteReport_Alert ("The layer already exists."); return attrib.header.index; } if (err != NoError) { WriteReport_Err ("Unable to create layer.", err); return -1; } return attrib.header.index; }
Showing an element could be done the same way (move back to original layer for example).
I hope this is useful for you.
Regards,
Tibor
API_Guid apiGuid; APIGuid2GSGuid (apiGuid).ConvertFromString("9C046988-FF12-406C-AFFF-DCDB0FAD4986"); Hide_Element(apiGuid);Please advice.
2015-06-19 10:44 AM
ggiloyan wrote:
Thank you for the help.
It creates hidden layer and code goes without any errors but the element does not disappear.
I'm calling the function by the following way
API_Guid apiGuid; APIGuid2GSGuid (apiGuid).ConvertFromString("9C046988-FF12-406C-AFFF-DCDB0FAD4986"); Hide_Element(apiGuid);
Please advice.
// ----------------------------------------------------------------------------- // Hides clicked element // ----------------------------------------------------------------------------- GSErrCode Hide_Clicked_Element (void) { API_Guid guid; if (!ClickAnElem ("Click an elem to hide", API_ZombieElemID, NULL, NULL, &guid)) { WriteReport_Alert ("No element was clicked"); return Error; } return ACAPI_CallUndoableCommand ("Hide element", [&] () -> GSErrCode { return Hide_Element (guid); }); }
2015-06-19 07:39 PM
Tibor wrote:Probably worth mentioning that
Did you used ACAPI_CallUndoableCommand?