How to change position of inline objects
Hello All,
I am trying to create an inline image frame within a text frame. and then I am trying to position the inline Image frame with Aboveline option.
But it doesn't work. I am able to sucessfully create the inline frame with help available in Snippet project. But when I try to set the position it fails not sure why. This is in InDesign CS6.
I am trying to do the following:
InterfacePtr<ITextModel> textModel(storyUIDRef, UseDefaultIID());
if(!textModel)
{
break;
}
InterfacePtr<IGeometry> pageItemGeometry(frameUIDRef, UseDefaultIID());
if (pageItemGeometry == nil) {
break;
}
// Insert character in text flow to anchor the inline.
boost::shared_ptr<WideString> insertMe(new WideString);
insertMe->Append(kTextChar_Inline);
InterfacePtr<ITextModelCmds> textModelCmds(textModel, UseDefaultIID());
InterfacePtr<ICommand> insertTextCmd(textModelCmds->InsertCmd(whereTextIndex, insertMe));
status = CmdUtils::ProcessCommand(insertTextCmd);
if(status != kSuccess) {
break;
}
// Change the page item into an inline.
InterfacePtr<ICommand> changeILGCmd(CmdUtils::CreateCommand(kChangeILGCmdBoss));
if (changeILGCmd == nil) {
break;
}
InterfacePtr<IRangeData> rangeData(changeILGCmd, UseDefaultIID());
if (rangeData == nil) {
break;
}
rangeData->Set(whereTextIndex, whereTextIndex);
InterfacePtr<IUIDData> ilgUIDData(changeILGCmd, UseDefaultIID());
if (ilgUIDData == nil) {
break;
}
ilgUIDData->Set(frameUIDRef);
changeILGCmd->SetItemList(UIDList(textModel));
status = CmdUtils::ProcessCommand(changeILGCmd);
InterfacePtr<ITextModel> textModel(storyUIDRef, UseDefaultIID());
if(!textModel) {
break;
}
InterfacePtr<IGeometry> pageItemGeometry(frameUIDRef, UseDefaultIID());
if (pageItemGeometry == nil) {
break;
}
// Insert character in text flow to anchor the inline.
boost::shared_ptr<WideString> insertMe(new WideString);
insertMe->Append(kTextChar_Inline);
InterfacePtr<ITextModelCmds> textModelCmds(textModel, UseDefaultIID());
InterfacePtr<ICommand> insertTextCmd(textModelCmds->InsertCmd(whereTextIndex, insertMe));
status = CmdUtils::ProcessCommand(insertTextCmd);
if(status != kSuccess) {
break;
}
// Change the page item into an inline.
InterfacePtr<ICommand> changeILGCmd(CmdUtils::CreateCommand(kChangeILGCmdBoss));
if (changeILGCmd == nil) {
break;
}
InterfacePtr<IRangeData> rangeData(changeILGCmd, UseDefaultIID());
if (rangeData == nil) {
break;
}
rangeData->Set(whereTextIndex, whereTextIndex);
InterfacePtr<IUIDData> ilgUIDData(changeILGCmd, UseDefaultIID());
if (ilgUIDData == nil) {
break;
}
ilgUIDData->Set(frameUIDRef);
changeILGCmd->SetItemList(UIDList(textModel));
status = CmdUtils::ProcessCommand(changeILGCmd);
//this created an Inline frame
UIDList newList;
newList = changeILGCmd->GetItemListReference();
// trying to set the position through newList
In the snippet its with active selection which i don't have here. Thus am trying to use the newList. I also tried IAnchoredObjectData command with the newList. Even that is not successful.
Is there something wrong what i am doing.
If someone has already tried this before please do let me know.
Thanks all in Advance.
Regards
Farzana.