FDK Programmer`s Reference

FDK Programmer`s Reference
FDK PROGRAMMER’S REFERENCE
ADOBE® FRAMEMAKER® (2017 release)
© 2017 Adobe Systems Incorporated and its licensors. All rights reserved.
Developing Structured Applications with FrameMaker FrameMaker Online Manual
If this guide is distributed with software that includes an end-user agreement, this guide, as well as the software
described in it, is furnished under license and may be used or copied only in accordance with the terms of such license.
Except as permitted by any such license, no part of this guide may be reproduced, stored in a retrieval system, or
transmitted, in any form or by any means, electronic, mechanical, recording, or otherwise, without the prior written
permission of Adobe Systems Incorporated. Please note that the content in this guide is protected under copyright law
even if it is not distributed with software that includes an end-user license agreement.
The content of this guide is furnished for informational use only, is subject to change without notice, and should not be
construed as a commitment by Adobe Systems Incorporated. Adobe Systems Incorporated assumes no responsibility
or liability for any errors or inaccuracies that may appear in the informational content contained in this guide.
Please remember that existing artwork or images that you may want to include in your project may be protected under
copyright law. The unauthorized incorporation of such material into your new work could be a violation of the rights of
the copyright owner. Please be sure to obtain any permission required from the copyright owner.
Any references to company names in sample templates are for demonstration purposes only and are not intended to
refer to any actual organization.
Adobe, the Adobe logo, Acrobat, Distiller, Flash, FrameMaker, Illustrator, PageMaker, Photoshop, PostScript, Reader,
Garamond, Kozuka Mincho, Kozuka Gothic, MinionPro, and MyriadPro are trademarks of Adobe Systems Incorporated.
Microsoft, Windows, and Windows Vista are either registered trademarks or trademarks of Microsoft Corporation in the
United States and/or other countries. Solaris is a trademark or registered trademark of Sun Microsystems, Inc. in the
United States and other countries. UNIX is a trademark in the United States and other countries, licensed exclusively
through X/Open Company, Ltd. SVG is a trademark of the World Wide Web Consortium; marks of the W3C are
registered and held by its host institutions MIT, INRIA, and Keio. All other trademarks are the property of their respective
owners.
This product contains either BISAFE and/or TIPEM software by RSA Data Security, Inc.
This product contains color data and/or the Licensed Trademark of The Focoltone Colour System.
PANTONE® Colors displayed in the software application or in the user documentation may not match PANTONEidentified standards. Consult current PANTONE Color Publications for accurate color. PANTONE® and other Pantone, Inc.
trademarks are property of Pantone, Inc. © Pantone, Inc. 2003. Pantone, Inc. is the copyright owner of color data and/or
software which are licensed to Adobe Systems Incorporated to distribute for use only in combination with Adobe
Illustrator. PANTONE Color Data and/or Software shall not be copied onto another disk or into memory unless as part of
the execution of Adobe Illustrator software.
Software is produced under Dainippon Ink and Chemicals Inc.'s copyrights of color-data-base derived from Sample
Books.
This product contains ImageStream® Graphics and Presentation Filters Copyright ©1991-1996 Inso Corporation and/or
Outside In® Viewer Technology ©1992-1996 Inso Corporation. All Rights Reserved.
This product includes software developed by the Apache Software Foundation (http://www.apache.org/).
Certain Spelling portions of this product is based on Proximity Linguistic Technology. ©Copyright 1990 MerriamWebster Inc. ©Copyright 1990 All rights reserved. Proximity Technology A Division of Franklin Electronic Publishers, Inc.
Burlington, New Jersey USA. ©Copyright 2003 Franklin Electronic Publishers Inc.©Copyright 2003 All rights reserved.
Proximity Technology A Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA. Legal Supplement
©Copyright 1990/1994 Merriam-Webster Inc./Franklin Electronic Publishers Inc. ©Copyright 1994 All rights reserved.
Proximity Technology A Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1990/
1994 Merriam- Webster Inc./Franklin Electronic Publishers Inc. ©Copyright 1997All rights reserved. Proximity
Technology A Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA ©Copyright 1990 MerriamWebster Inc. ©Copyright 1993 All rights reserved. Proximity Technology A Division of Franklin Electronic Publishers, Inc.
Burlington, New Jersey USA. ©Copyright 2004 Franklin Electronic Publishers Inc. ©Copyright 2004 All rights reserved.
Proximity Technology A Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1991 Dr.
Lluis de Yzaguirre I Maura ©Copyright 1991 All rights reserved. Proximity Technology A Division of Franklin Electronic
Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1990 Munksgaard International Publishers Ltd. ©Copyright
1990 All rights reserved. Proximity Technology A Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey
USA. ©Copyright 1990 Van Dale Lexicografie bv ©Copyright 1990 All rights reserved. Proximity Technology A Division
of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1995 Van Dale Lexicografie bv
©Copyright 1996 All rights reserved. Proximity Technology A Division of Franklin Electronic Publishers, Inc. Burlington,
New Jersey USA. ©Copyright 1990 IDE a.s. ©Copyright 1990 All rights reserved. Proximity Technology A Division of
Franklin Electronic Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1992 Hachette/Franklin Electronic
Publishers Inc. ©Copyright 2004 All rights reserved. Proximity Technology A Division of Franklin Electronic Publishers,
Inc. Burlington, New Jersey USA. ©Copyright 1991 Text & Satz Datentechnik ©Copyright 1991 All rights reserved.
Proximity Technology A Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA. ©Copyright 2004
Bertelsmann Lexikon Verlag ©Copyright 2004 All rights reserved. Proximity Technology A Division of Franklin Electronic
Publishers, Inc. Burlington, New Jersey USA. ©Copyright 2004 MorphoLogic Inc. ©Copyright 2004 All rights reserved.
Proximity Technology A Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1990
William Collins Sons & Co. Ltd. ©Copyright 1990 All rights reserved. Proximity Technology A Division of Franklin
Electronic Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1993-95 Russicon Company Ltd. ©Copyright 1995
All rights reserved. Proximity Technology A Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA.
©Copyright 2004 IDE a.s. ©Copyright 2004 All rights reserved. Proximity Technology A Division of Franklin Electronic
Publishers, Inc. Burlington, New Jersey USA. The Hyphenation portion of this product is based on Proximity Linguistic
Technology. ©Copyright 2003 Franklin Electronic Publishers Inc.©Copyright 2003 All rights reserved. Proximity
Technology A Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1984 William
Collins Sons & Co. Ltd. ©Copyright 1988 All rights reserved. Proximity Technology A Division of Franklin Electronic
Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1990 Munksgaard International Publishers Ltd. ©Copyright
1990 All rights reserved. Proximity Technology A Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey
USA. ©Copyright 1997 Van Dale Lexicografie bv ©Copyright 1997 All rights reserved. Proximity Technology A Division
of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1984 Editions Fernand Nathan
©Copyright 1989 All rights reserved. Proximity Technology A Division of Franklin Electronic Publishers, Inc. Burlington,
New Jersey USA. ©Copyright 1983 S Fischer Verlag ©Copyright 1997 All rights reserved. Proximity Technology A
Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1989 Zanichelli ©Copyright 1989
All rights reserved. Proximity Technology A Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA.
©Copyright 1989 IDE a.s. ©Copyright 1989 All rights reserved. Proximity Technology A Division of Franklin Electronic
Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1990 Espasa-Calpe ©Copyright 1990 All rights reserved.
Proximity Technology A Division of Franklin Electronic Publishers, Inc. Burlington, New Jersey USA. ©Copyright 1989
C.A. Stromberg AB. ©Copyright 1989 All rights reserved. Proximity Technology A Division of Franklin Electronic
Publishers, Inc. Burlington, New Jersey USA.
Portions of Adobe Acrobat include technology used under license from Autonomy, and are copyrighted.
Adobe Systems Incorporated, 345 Park Avenue, San Jose, California 95110, USA.
Notice to U.S. government end users. The software and documentation are “Commercial Items,” as that term is defined
at 48 C.F.R. §2.101, consisting of “Commercial Computer Software” and “Commercial Computer Software
Documentation,” as such terms are used in 48 C.F.R. §12.212 or 48 C.F.R. §227.7202, as applicable. Consistent with 48
C.F.R. §12.212 or 48 C.F.R. §§227.7202-1 through 227.7202-4, as applicable, the Commercial Computer Software and
Commercial Computer Software Documentation are being licensed to U.S. Government end users (a) only as
Commercial items and (b) with only those rights as are granted to all other end users pursuant to the terms and
conditions herein. Unpublished-rights reserved under the copyright laws of the United States. For U.S. Government End
Users, Adobe agrees to comply with all applicable equal opportunity laws including, if appropriate, the provisions of
Executive Order 11246, as amended, Section 402 of the Vietnam Era Veterans Readjustment Assistance Act of 1974 (38
USC 4212), and Section 503 of the Rehabilitation Act of 1973, as amended, and the regulations at 41 CFR Parts 60-1
through 60-60, 60-250, and 60- 741. The affirmative action clause and regulations contained in the preceding sentence
shall be incorporated by reference.
Contents
.....
..................................
1
What’s New in FDK 2017 Release ............................................................................. 17
Project ........................................................................................................................... 17
Workspace ..................................................................................................................... 17
Search text within a list ................................................................................................. 18
Rectangle values for client dialog ................................................................................. 18
Update TOC in all documents within a book ................................................................ 18
Right to Left number handling ...................................................................................... 18
Maximum references levels in DITA file ...................................................................... 18
2
Function Summary ..................................................................................................... 19
Client-defined callback functions ................................................................................... 20
Books .............................................................................................................................. 20
Characters ....................................................................................................................... 22
Clipboard ........................................................................................................................ 23
Commands and menus .................................................................................................... 23
Data structures: copying ................................................................................................. 25
Debugging....................................................................................................................... 25
DITA references: updating.............................................................................................. 27
Dialog boxes: predefined ................................................................................................ 27
Dialog boxes: client-defined........................................................................................... 27
Documents: comparing ................................................................................................... 29
Documents: file operations ............................................................................................. 29
Documents: formatting ................................................................................................... 30
Documents: updating ...................................................................................................... 30
F-codes............................................................................................................................ 31
Files, directories, and filepaths ....................................................................................... 31
Fonts................................................................................................................................ 32
Graphic insets ................................................................................................................. 32
Hash tables...................................................................................................................... 33
Hypertext ........................................................................................................................ 33
I/O ................................................................................................................................... 33
Insets ............................................................................................................................... 34
Key Catalogs................................................................................................................... 35
Memory: allocating and deallocating structures............................................................. 35
Memory: manipulating with handles .............................................................................. 37
Memory: manipulating with pointers ............................................................................. 37
Menus.............................................................................................................................. 38
Metrics ............................................................................................................................ 39
Maker Interchange Format (MIF)................................................................................... 39
FDK Programmer’s Guide
1
Contents
Objects: creating and deleting......................................................................................... 41
Objects: getting IDs ........................................................................................................ 43
Printing............................................................................................................................ 43
Project ............................................................................................................................. 43
Properties ........................................................................................................................ 44
Selection.......................................................................................................................... 46
Sessions........................................................................................................................... 46
Sleep................................................................................................................................ 46
String lists ....................................................................................................................... 46
Strings: allocating, copying, and deallocating ................................................................ 48
Strings: comparing and parsing ...................................................................................... 48
Strings: concatenating..................................................................................................... 50
Strings: miscellaneous .................................................................................................... 50
Strings: encoded ............................................................................................................. 51
Structure: manipulating elements ................................................................................... 51
Structure: manipulating element definitions and format rules........................................ 53
Tables .............................................................................................................................. 53
Text ................................................................................................................................. 55
Text: find and replace ..................................................................................................... 55
Text insets ....................................................................................................................... 56
Unicode .......................................................................................................................... 56
Undo/Redo ...................................................................................................................... 56
Utility .............................................................................................................................. 58
Workspace....................................................................................................................... 58
3
2
FDK Programmer’s Guide
FDK Function Reference ............................................................................................ 60
........................................................................................................................................ 60
F_Alloc()......................................................................................................................... 61
F_AllocHandle() ............................................................................................................. 62
F_ApiAddCols() ............................................................................................................. 63
F_ApiAddCommandToMenu() ...................................................................................... 65
F_ApiAddLocationToProject()....................................................................................... 67
F_ApiAddMenuToMenu().............................................................................................. 68
F_ApiAddRows()............................................................................................................ 72
F_ApiAddText() ............................................................................................................. 74
F_ApiAddPreferencePanel()........................................................................................... 76
F_ApiAlert() ................................................................................................................... 77
F_ApiAlive()................................................................................................................... 80
F_ApiAllocatePropVals() ............................................................................................... 80
F_ApiAllocateTextItems().............................................................................................. 81
F_ApiApplyAttributeExpression() ................................................................................. 82
F_ApiApplyAttributeExpressionAsCondition()............................................................. 83
F_ApiApplyConditionalSettings().................................................................................. 84
F_ApiApplyPageLayout() .............................................................................................. 86
F_ApiBailOut()............................................................................................................... 88
F_ApiCallClient() ........................................................................................................... 89
F_ApiCenterOnText()..................................................................................................... 90
F_ApiCheckStatus()........................................................................................................ 92
...
Contents
F_ApiChooseFile() ......................................................................................................... 93
F_ApiClear()................................................................................................................... 96
F_ApiClearAllChangebars()........................................................................................... 98
F_ApiClientDir() ............................................................................................................ 99
F_ApiClientName() ...................................................................................................... 100
F_ApiClientPath()......................................................................................................... 102
F_ApiClose() ................................................................................................................ 103
F_ApiCombinedFamilyFonts()..................................................................................... 105
F_ApiCommand()......................................................................................................... 107
F_ApiCompare()........................................................................................................... 108
F_ApiConnectToSession()............................................................................................ 111
F_ApiCopy()................................................................................................................. 111
F_ApiCopyStructureType() .......................................................................................... 114
F_ApiCustomDoc() ...................................................................................................... 115
F_ApiCut().................................................................................................................... 119
F_ApiDeallocateStructureType().................................................................................. 121
F_ApiDefineAndAddCommand() ................................................................................ 122
F_ApiDefineAndAddCommandEx()............................................................................ 125
F_ApiDefineAndAddMenu()........................................................................................ 129
F_ApiDefineCommand() .............................................................................................. 132
F_ApiDefineCommandEx().......................................................................................... 134
F_ApiDefineMenu() ..................................................................................................... 136
F_ApiDelete() ............................................................................................................... 138
F_ApiDeleteAllKeyDefinitions() ................................................................................. 139
F_ApiDeleteCols()........................................................................................................ 140
F_ApiDeleteComponentFromProject() ........................................................................ 142
F_ApiDeletePropByName() ......................................................................................... 144
F_ApiDeleteRows() ...................................................................................................... 145
F_ApiDeleteText()........................................................................................................ 147
F_ApiDeleteTextInsetContents().................................................................................. 148
F_ApiDialogEvent() ..................................................................................................... 151
F_ApiDialogItemId() .................................................................................................... 154
F_ApiDisconnectFromSession()................................................................................... 154
F_ApiEditComponentOfProject()................................................................................. 157
F_ApiEnableUnicode()................................................................................................. 158
F_ApiErr() .................................................................................................................... 160
F_ApiExploreComponentOfProject()........................................................................... 161
F_ApiExternalize() ....................................................................................................... 162
F_ApiFamilyFonts() ..................................................................................................... 163
F_ApiFcodes() .............................................................................................................. 165
F_ApiFind() .................................................................................................................. 166
F_ApiGetAllKeyDefinitions() ...................................................................................... 173
F_ApiGetAllKeys() ...................................................................................................... 183
F_ApiGetConditionalExpression() ............................................................................... 185
F_ApiGetConditionalSettings () ................................................................................... 186
F_ApiGetDialogInitialRect() ........................................................................................ 186
F_ApiGetEncodingForFamily().................................................................................... 188
F_ApiGetEncodingForFont()........................................................................................ 190
FDK Programmer’s Guide
3
Contents
F_ApiGetId() ................................................................................................................ 192
F_ApiGetImportDefaultParams() ................................................................................. 194
F_ApiGetInt() ............................................................................................................... 202
F_ApiGetIntByName() ................................................................................................. 204
F_ApiGetInts().............................................................................................................. 205
F_ApiGetKeyCatalog()................................................................................................. 207
F_ApiGetKeyDefinition()............................................................................................. 208
F_ApiGetMathMLCustomXmlData() .......................................................................... 210
F_ApiGetMetric() ......................................................................................................... 211
F_ApiGetMetricByName()........................................................................................... 212
F_ApiGetMetrics()........................................................................................................ 214
F_ApiGetNamedObject().............................................................................................. 216
F_ApiGetNewXMLDefaultParams()............................................................................ 217
F_ApiGetObjectType()................................................................................................. 220
F_ApiGetOpenDefaultParams() ................................................................................... 221
F_ApiGetPoints().......................................................................................................... 230
F_ApiGetPropIndex() ................................................................................................... 232
F_ApiGetProps()........................................................................................................... 233
F_ApiGetPropVal() ...................................................................................................... 234
F_ApiGetSaveDefaultParams() .................................................................................... 236
F_ApiGetString() .......................................................................................................... 243
F_ApiGetStrings() ........................................................................................................ 244
F_ApiGetSupportedEncodings() .................................................................................. 246
F_ApiGetTabs() ............................................................................................................ 247
F_ApiGetText() ............................................................................................................ 251
F_ApiGetText2() .......................................................................................................... 258
F_ApiGetTextForRange()............................................................................................. 262
F_ApiGetTextForRange2()........................................................................................... 263
F_ApiGetTextLoc() ...................................................................................................... 266
F_ApiGetTextProps() ................................................................................................... 267
F_ApiGetTextPropVal() ............................................................................................... 269
F_ApiGetTextRange() .................................................................................................. 271
F_ApiGetTextVal()....................................................................................................... 273
F_ApiGetUBytesByName().......................................................................................... 275
F_ApiGetUniqueObject() ............................................................................................. 277
F_ApiGetUpdateBookDefaultParams()........................................................................ 280
F_ApiGetVal() .............................................................................................................. 284
F_ApiGetWorkspaceName() ........................................................................................ 286
F_ApiHypertextCommand()......................................................................................... 287
F_ApiImport()............................................................................................................... 288
F_ApiImportDoc() ........................................................................................................ 295
F_ApiInitialize() ........................................................................................................... 296
F_ApiInitListViewSearch() .......................................................................................... 298
F_ApiIsEncodingSupported()....................................................................................... 299
F_ApiLoadMenuCustomizationFile() .......................................................................... 300
F_ApiMakeTblSelection() ............................................................................................ 301
F_ApiManageConditionalExpressions() ...................................................................... 303
F_ApiMenuItemInMenu() ............................................................................................ 304
4
FDK Programmer’s Guide
...
Contents
F_ApiMessage()............................................................................................................ 309
F_ApiModalDialog() .................................................................................................... 309
F_ApiModelessDialog() ............................................................................................... 311
F_ApiMoveComponent().............................................................................................. 312
F_ApiNetLibSetAuthFunction()................................................................................... 313
F_ApiNetLibStat() ........................................................................................................ 316
F_ApiNewAnchoredFormattedObject() ....................................................................... 316
F_ApiNewAnchoredObject()........................................................................................ 318
F_ApiNewBookComponentOfTypeInHierarchy()....................................................... 322
F_ApiNewGraphicObject() .......................................................................................... 328
......................................................................... F_ApiNewInlineComponentOfType()330
F_ApiNewKeyCatalog()............................................................................................... 331
F_ApiNewKeyDefinition()........................................................................................... 331
F_ApiNewNamedObject()............................................................................................ 333
F_ApiNewProject()....................................................................................................... 335
F_ApiNewSeriesObject().............................................................................................. 336
F_ApiNewTable()......................................................................................................... 342
F_ApiNewXML() ......................................................................................................... 344
F_ApiNotification() ...................................................................................................... 345
F_ApiNotify() ............................................................................................................... 355
F_ApiObjectValid() ...................................................................................................... 360
F_ApiOpen()................................................................................................................. 361
F_ApiOpenProject()...................................................................................................... 369
F_ApiOpenResource() .................................................................................................. 370
F_ApiPaste() ................................................................................................................. 370
F_ApiPopClipboard() ................................................................................................... 373
F_ApiPrintFAErrno().................................................................................................... 374
F_ApiPrintImportStatus() ............................................................................................. 376
F_ApiPrintOpenStatus() ............................................................................................... 377
F_ApiPrintPropVal() .................................................................................................... 377
F_ApiPrintPropVals()................................................................................................... 378
F_ApiPrintSaveStatus() ................................................................................................ 379
F_ApiPrintTextItem() ................................................................................................... 380
F_ApiPrintTextItems().................................................................................................. 381
F_ApiPrintUpdateBookStatus().................................................................................... 382
F_ApiProgressBarEx().................................................................................................. 383
F_ApiPromoteElement()............................................................................................... 384
F_ApiPromptInt() ......................................................................................................... 385
F_ApiPromptMetric() ................................................................................................... 387
F_ApiPromptString() .................................................................................................... 388
F_ApiPushClipboard().................................................................................................. 390
F_ApiQuickSelect() ...................................................................................................... 391
F_ApiRedisplay().......................................................................................................... 392
F_ApiReformat() .......................................................................................................... 394
F_ApiRehyphenate()..................................................................................................... 395
F_ApiRenameComponentOfProject() .......................................................................... 396
F_ApiResetEqnSettings() ............................................................................................. 397
F_ApiResetReferenceFrames()..................................................................................... 398
FDK Programmer’s Guide
5
Contents
F_ApiRestartPgfNumbering() ...................................................................................... 399
F_ApiReturnValue() ..................................................................................................... 400
F_ApiSave().................................................................................................................. 405
F_ApiSaveProject() ...................................................................................................... 408
F_ApiScrollBox() ......................................................................................................... 409
F_ApiScrollToText() .................................................................................................... 411
F_ApiService().............................................................................................................. 412
F_ApiSetClientDir() ..................................................................................................... 418
F_ApiSetCurrentWorkspace() ...................................................................................... 418
F_ApiSetId() ................................................................................................................. 421
F_ApiSetInt() ................................................................................................................ 424
F_ApiSetIntByName().................................................................................................. 426
F_ApiSetInts() .............................................................................................................. 428
F_ApiSetMetric().......................................................................................................... 430
F_ApiSetMetricByName()............................................................................................ 432
F_ApiSetMetrics() ........................................................................................................ 433
F_ApiSetPoints() .......................................................................................................... 436
F_ApiSetProps() ........................................................................................................... 439
F_ApiSetPropVal() ....................................................................................................... 441
F_ApiSetString()........................................................................................................... 443
F_ApiSetStrings() ......................................................................................................... 445
F_ApiSetTabs()............................................................................................................. 448
F_ApiSetTextLoc()....................................................................................................... 451
F_ApiSetTextProps() .................................................................................................... 452
F_ApiSetTextPropVal()................................................................................................ 454
F_ApiSetTextRange()................................................................................................... 457
F_ApiSetTextVal() ....................................................................................................... 459
F_ApiSetUBytesByName() .......................................................................................... 461
F_ApiShutDown() ........................................................................................................ 462
F_ApiSilentPrintDoc().................................................................................................. 463
F_ApiSimpleGenerate()................................................................................................ 466
F_ApiSimpleImportFormats() ...................................................................................... 469
F_ApiSimpleNewDoc() ................................................................................................ 471
F_ApiSimpleOpen()...................................................................................................... 472
F_ApiSimpleSave() ...................................................................................................... 473
F_ApiSleep()................................................................................................................. 475
F_ApiStraddleCells() .................................................................................................... 477
F_ApiStringLen().......................................................................................................... 478
F_ApiUndoCancel()...................................................................................................... 482
F_ApiUndoEndCheckPoint()........................................................................................ 483
F_ApiUndoStartCheckPoint() ...................................................................................... 484
F_ApiUpdateBook() ..................................................................................................... 488
F_ApiUpdateDITAReference() .................................................................................... 491
F_ApiUpdateDITAReferences()................................................................................... 493
F_ApiUpdateKeyDefinition()....................................................................................... 495
F_ApiUpdateVariables()............................................................................................... 497
F_ApiUpdateXRef() ..................................................................................................... 498
F_ApiUpdateXRefs().................................................................................................... 500
6
FDK Programmer’s Guide
...
Contents
F_ApiConvertXrefToText().......................................................................................... 502
F_ApiUserCancel()....................................................................................................... 502
F_ApiUSleep().............................................................................................................. 503
F_ApiWinConnectSession() ......................................................................................... 504
F_ApiWinInstallDefaultMessageFilter() ...................................................................... 505
F_Assert() ..................................................................................................................... 506
F_Calloc() ..................................................................................................................... 507
F_ChannelAppend()...................................................................................................... 508
F_ChannelClose() ......................................................................................................... 509
F_ChannelCloseTmp().................................................................................................. 510
F_ChannelEof() ............................................................................................................ 510
F_ChannelFlush() ......................................................................................................... 511
F_ChannelMakeTmp().................................................................................................. 512
F_ChannelOpen().......................................................................................................... 512
F_ChannelPeek() .......................................................................................................... 514
F_ChannelRead() .......................................................................................................... 515
F_ChannelSeek() .......................................................................................................... 516
F_ChannelSize() ........................................................................................................... 517
F_ChannelTell()............................................................................................................ 518
F_ChannelWrite() ......................................................................................................... 519
F_CharIsAlphabetic() ................................................................................................... 520
F_CharIsAlphaUTF8().................................................................................................. 521
F_CharIsAlphaNumeric() ............................................................................................. 522
F_CharIsAlphaNumericUTF8().................................................................................... 523
F_CharIsControl()......................................................................................................... 523
F_CharIsControlUTF8() ............................................................................................... 524
F_CharIsDoubleByte().................................................................................................. 525
F_CharIsDoubleByteFirst() .......................................................................................... 526
F_CharIsDoubleByteSecond()...................................................................................... 528
F_CharIsEol() ............................................................................................................... 529
F_CharIsEolUTF8()...................................................................................................... 530
F_CharIsHexadecimal()................................................................................................ 531
F_CharIsHexadecimalUTF8() ...................................................................................... 532
F_CharIsLower() .......................................................................................................... 533
F_CharIsLowerUTF8()................................................................................................. 533
F_CharIsNumeric()....................................................................................................... 534
F_CharIsNumericUTF8() ............................................................................................. 535
F_CharIsUpper()........................................................................................................... 536
F_CharIsUpperUTF8() ................................................................................................. 536
F_CharToLower()......................................................................................................... 537
F_CharToLowerUTF8() ............................................................................................... 538
F_CharToUpper() ......................................................................................................... 539
F_CharToUpperUTF8()................................................................................................ 540
F_CharUTF16ToUTF8() .............................................................................................. 541
F_CharUTF32ToUTF8() .............................................................................................. 542
F_CharUTF8ToUTF16() .............................................................................................. 543
F_CharUTF8ToUTF32() .............................................................................................. 544
F_ClearHandle() ........................................................................................................... 545
FDK Programmer’s Guide
7
Contents
F_ClearPtr() .................................................................................................................. 545
F_CopyPtr() .................................................................................................................. 546
F_DeleteFile()............................................................................................................... 547
F_DigitValue().............................................................................................................. 548
F_DuplicateHandle() .................................................................................................... 549
F_DuplicatePtr() ........................................................................................................... 550
F_Exit()......................................................................................................................... 551
F_FdeEncodingsInitialized() ........................................................................................ 552
F_FdeInit() .................................................................................................................... 552
F_FdeInitFontEncs()..................................................................................................... 553
F_FilePathBaseName()................................................................................................. 555
F_FilePathCloseDir().................................................................................................... 556
F_FilePathCopy().......................................................................................................... 556
F_FilePathFree() ........................................................................................................... 557
F_FilePathGetNext()..................................................................................................... 558
F_FilePathOpenDir() .................................................................................................... 559
F_FilePathParent() ........................................................................................................ 560
F_FilePathProperty() .................................................................................................... 561
F_FilePathToPathName() ............................................................................................. 562
F_FontEncId()............................................................................................................... 564
F_FontEncName() ........................................................................................................ 565
F_FontEncToTextEnc() ................................................................................................ 566
F_Free() ........................................................................................................................ 567
F_FreeHandle()............................................................................................................. 568
F_GetFilePath() ............................................................................................................ 569
F_GetICUDataDir() ...................................................................................................... 569
F_GetHandleSize() ....................................................................................................... 570
F_HandleEqual()........................................................................................................... 571
F_HashCreate()............................................................................................................. 572
F_HashDestroy()........................................................................................................... 576
F_HashEnumerate() ...................................................................................................... 576
F_HashGet().................................................................................................................. 578
F_HashRemove() .......................................................................................................... 578
F_HashReportOnData() ................................................................................................ 579
F_HashSet() .................................................................................................................. 581
F_IsValidUTF8() .......................................................................................................... 581
F_LanguageNumber()................................................................................................... 582
F_LanguageString() ...................................................................................................... 584
F_LockHandle()............................................................................................................ 585
F_MakeDir() ................................................................................................................. 586
F_MetricApproxEqual() ............................................................................................... 586
F_MetricConstrainAngle()............................................................................................ 587
F_MetricDiv()............................................................................................................... 589
F_MetricFloat()............................................................................................................. 589
F_MetricFractMul() ...................................................................................................... 590
F_MetricMake()............................................................................................................ 591
F_MetricMul() .............................................................................................................. 592
F_MetricNormalizeAngle() .......................................................................................... 592
8
FDK Programmer’s Guide
...
Contents
F_MetricSqrt() .............................................................................................................. 594
F_MetricSquare().......................................................................................................... 594
F_MetricToFloat() ........................................................................................................ 595
F_MifBegin() ................................................................................................................ 596
F_MifComment().......................................................................................................... 596
F_MifDecimal() ............................................................................................................ 597
F_MifEnd() ................................................................................................................... 598
F_MifGetIndent().......................................................................................................... 600
F_MifIndent() ............................................................................................................... 600
F_MifIndentDec()......................................................................................................... 601
F_MifIndentInc() .......................................................................................................... 602
F_MifInteger() .............................................................................................................. 602
F_MifNewLine()........................................................................................................... 603
F_MifSetIndent() .......................................................................................................... 604
F_MifSetOutputChannel() ............................................................................................ 605
F_MifSpace() ................................................................................................................ 606
F_MifTab() ................................................................................................................... 606
F_MifText() .................................................................................................................. 607
F_MifTextString() ........................................................................................................ 608
Simple MIF library ....................................................................................................... 608
F_PathNameToFilePath() ............................................................................................. 613
F_PathNameType()....................................................................................................... 615
F_Printf() ...................................................................................................................... 615
F_Progress().................................................................................................................. 617
F_PtrEqual().................................................................................................................. 618
F_ReadBytes() .............................................................................................................. 620
F_ReadLongs() ............................................................................................................. 621
F_ReadShorts() ............................................................................................................. 622
F_Realloc() ................................................................................................................... 623
F_ReallocHandle()........................................................................................................ 625
F_RenameFile() ............................................................................................................ 627
F_ResetByteOrder()...................................................................................................... 627
F_ResetDirHandle()...................................................................................................... 629
F_Scanf() ...................................................................................................................... 630
F_SetAssert() ................................................................................................................ 631
F_SetByteOrder().......................................................................................................... 632
F_SetDSExit()............................................................................................................... 632
F_SetICUDataDir()....................................................................................................... 633
F_Sprintf() .................................................................................................................... 635
F_Sscanf()..................................................................................................................... 637
F_StrAlphaToInt() ........................................................................................................ 638
F_StrAlphaToIntUnicode()........................................................................................... 638
F_StrAlphaToReal() ..................................................................................................... 640
F_StrAlphaToRealUnicode()........................................................................................ 640
F_StrBrk()..................................................................................................................... 642
F_StrBrkUTF8 () .......................................................................................................... 642
F_StrCat() ..................................................................................................................... 644
F_StrCatCharN()........................................................................................................... 645
FDK Programmer’s Guide
9
Contents
F_StrCatDblCharNEnc() .............................................................................................. 646
F_StrCatIntN() .............................................................................................................. 647
F_StrCatN() .................................................................................................................. 649
F_StrCatNEnc() ............................................................................................................ 650
F_StrCatUTF8CharNByte ()......................................................................................... 651
F_StrChr()..................................................................................................................... 652
F_StrChrEnc()............................................................................................................... 653
F_StrChrUTF8() ........................................................................................................... 655
F_StrCmp() ................................................................................................................... 656
F_StrCmpN() ................................................................................................................ 657
F_StrCmpNEnc() .......................................................................................................... 657
F_StrICmpNUTF8Char ................................................................................................ 658
F_StrCmpUTF8().......................................................................................................... 659
F_StrCmpUTF8Locale()............................................................................................... 661
F_StrICmpUTF8Locale() ............................................................................................. 662
F_StrConvertEnc(), F_StrConvertEnc_IgnoreControlChars(), F_StrConvertEnc_ConvertControlChars() .............................................................................................................. 662
F_StrCopyString() ........................................................................................................ 665
F_StrCpy() .................................................................................................................... 666
F_StrCpyN() ................................................................................................................. 667
F_StrCpyNEnc() ........................................................................................................... 668
F_StrCpyNUTF8Char () ............................................................................................... 669
F_StrEqual().................................................................................................................. 670
F_StrEqualN()............................................................................................................... 671
F_StrICmp().................................................................................................................. 671
F_StrICmpEnc()............................................................................................................ 672
F_StrICmpN()............................................................................................................... 673
F_StrICmpNEnc()......................................................................................................... 674
F_StrIEqual() ................................................................................................................ 675
F_StrIEqualEnc() .......................................................................................................... 676
F_StrIEqualN() ............................................................................................................. 677
F_StrIEqualNEnc() ....................................................................................................... 678
F_StrIEqualNUTF8Char () ........................................................................................... 679
F_StrIPrefixEnc().......................................................................................................... 680
F_StrIsEmpty() ............................................................................................................. 681
F_StrISuffixEnc() ......................................................................................................... 682
F_StrLen()..................................................................................................................... 683
F_StrLenEnc() .............................................................................................................. 683
F_StrLenUTF16() ......................................................................................................... 684
F_StrListAppend() ........................................................................................................ 685
F_StrListCat() ............................................................................................................... 686
F_StrListCopy() ............................................................................................................ 686
F_StrListCopyList()...................................................................................................... 688
F_StrListFirst() ............................................................................................................. 689
F_StrListFree().............................................................................................................. 690
F_StrListGet()............................................................................................................... 691
F_StrListIIndex() .......................................................................................................... 691
F_StrListIndex()............................................................................................................ 693
10
FDK Programmer’s Guide
...
Contents
F_StrListInsert()............................................................................................................ 694
F_StrListLast().............................................................................................................. 694
F_StrListLen() .............................................................................................................. 695
F_StrListNew() ............................................................................................................. 696
F_StrListRemove() ....................................................................................................... 697
F_StrListSetString()...................................................................................................... 697
F_StrListSort() .............................................................................................................. 698
F_StrNew() ................................................................................................................... 700
F_StrPrefix() ................................................................................................................. 701
F_StrPrefixN() .............................................................................................................. 702
F_StrRChr() .................................................................................................................. 702
F_StrRChrEnc() ............................................................................................................ 703
F_StrReverse() .............................................................................................................. 705
F_StrReverseUTF8Char ()............................................................................................ 705
F_StrStrip() ................................................................................................................... 708
F_StrStripLeadingSpaces()........................................................................................... 708
F_StrStripTrailingSpaces() ........................................................................................... 709
F_StrStripUTF8Chars () ............................................................................................... 710
F_StrStripUTF8String ()............................................................................................... 711
F_StrStripUTF8Strings () ............................................................................................. 712
F_StrSubString()........................................................................................................... 713
F_StrSuffix()................................................................................................................. 714
F_StrTok() .................................................................................................................... 715
F_StrTokUTF8 ().......................................................................................................... 716
F_StrTrunc() ................................................................................................................. 717
F_StrTruncEnc() ........................................................................................................... 718
F_TextEncToFontEnc() ................................................................................................ 719
F_UnlockHandle() ........................................................................................................ 721
F_UTF16CharSize() ..................................................................................................... 721
F_UTF16NextChar() .................................................................................................... 722
F_UTF8CharSize() ....................................................................................................... 723
F_UTF8NextChar() ...................................................................................................... 724
F_Warning().................................................................................................................. 726
F_WriteBytes() ............................................................................................................. 726
F_WriteLongs() ............................................................................................................ 727
F_WriteShorts() ............................................................................................................ 728
...................................................................................................................................... 729
4
Object Reference ....................................................................................................... 731
Books .......................................................................................................................... 731
FO_Book....................................................................................................................... 731
FO_BookComponent .................................................................................................... 747
Character formats ........................................................................................................ 758
FO_CharFmt ................................................................................................................. 758
Colors .......................................................................................................................... 763
FO_Color ...................................................................................................................... 763
Columns ...................................................................................................................... 765
Combined font definitions .......................................................................................... 766
FDK Programmer’s Guide
11
Contents
FO_CombinedFontDefn ............................................................................................... 767
Commands, menus, menu items, and menu item separators ...................................... 768
Common command, menu, and menu item separator properties ................................. 768
FO_Command............................................................................................................... 769
FO_MenuItemSeparator ............................................................................................... 774
FO_Menu ...................................................................................................................... 774
Conditions ................................................................................................................... 775
FO_AttrCondExpr ........................................................................................................ 775
FO_CondFmt ................................................................................................................ 775
Cross-references .......................................................................................................... 777
FO_XRef....................................................................................................................... 777
FO_XRefFmt ................................................................................................................ 778
Dialog boxes ............................................................................................................... 778
FO_DialogResource...................................................................................................... 779
FO_DlgBox................................................................................................................... 782
FO_DlgButton .............................................................................................................. 783
FO_DlgCheckBox ........................................................................................................ 783
FO_DlgEditBox ............................................................................................................ 784
FO_DlgImage ............................................................................................................... 784
FO_DlgLabel ................................................................................................................ 784
FO_DlgPopUp .............................................................................................................. 785
FO_DlgRadioButton..................................................................................................... 785
FO_DlgScrollBar .......................................................................................................... 786
FO_DlgScrollBox ......................................................................................................... 787
FO_DlgTriBox.............................................................................................................. 788
Documents .................................................................................................................. 788
FO_Doc......................................................................................................................... 788
Elements ...................................................................................................................... 837
Flows ........................................................................................................................... 837
FO_Flow ....................................................................................................................... 837
Footnotes ..................................................................................................................... 838
FO_Fn ........................................................................................................................... 839
Format change lists ..................................................................................................... 839
FO_FmtChangeList ...................................................................................................... 840
Format rules ................................................................................................................ 849
FO_FmtRule ................................................................................................................. 849
FO_FmtRuleClause ...................................................................................................... 850
Frames ......................................................................................................................... 852
Graphics ...................................................................................................................... 852
FO_AFrame .................................................................................................................. 857
FO_Arc ......................................................................................................................... 859
FO_Ellipse .................................................................................................................... 860
FO_Group ..................................................................................................................... 860
FO_Inset........................................................................................................................ 860
FO_KeyCatalog ............................................................................................................ 867
FO_Line ........................................................................................................................ 868
FO_Math....................................................................................................................... 868
FO_Polygon .................................................................................................................. 869
12
FDK Programmer’s Guide
...
Contents
FO_Polyline .................................................................................................................. 869
FO_Rectangle ............................................................................................................... 870
FO_RoundRect ............................................................................................................. 870
FO_TextFrame .............................................................................................................. 871
FO_TextLine................................................................................................................. 873
FO_UnanchoredFrame.................................................................................................. 875
FO_Graphicsfmt ........................................................................................................... 876
Insets ........................................................................................................................... 880
Markers ....................................................................................................................... 880
FO_Marker.................................................................................................................... 880
Marker types ............................................................................................................... 881
FO_MarkerType............................................................................................................ 881
Menus .......................................................................................................................... 881
Menu items ................................................................................................................. 882
Pages ........................................................................................................................... 882
FO_BodyPage............................................................................................................... 882
FO_HiddenPage............................................................................................................ 883
FO_MasterPage ............................................................................................................ 883
FO_RefPage.................................................................................................................. 884
Paragraphs ................................................................................................................... 885
FO_Pgf.......................................................................................................................... 885
FO_PgfFmt ................................................................................................................... 895
Rubi composites .......................................................................................................... 906
FO_Rubi........................................................................................................................ 906
Table ruling formats .................................................................................................... 907
FO_RulingFmt .............................................................................................................. 907
Separators .................................................................................................................... 907
Session ........................................................................................................................ 907
FO_Session ................................................................................................................... 908
Structural elements ..................................................................................................... 917
FO_Element .................................................................................................................. 917
FO_ElementDef ............................................................................................................ 925
Tables .......................................................................................................................... 928
FO_Cell......................................................................................................................... 929
FO_Row........................................................................................................................ 932
FO_Tbl.......................................................................................................................... 934
Table formats .............................................................................................................. 941
FO_TblFmt ................................................................................................................... 941
Text columns ............................................................................................................... 945
Text frames ................................................................................................................. 945
Text insets ................................................................................................................... 946
Common text inset properties ....................................................................................... 946
FO_TiApiClient properties ........................................................................................... 950
FO_TiFlow properties................................................................................................... 950
FO_TiText properties.................................................................................................... 951
FO_TiTextTable properties ........................................................................................... 952
Text properties ............................................................................................................ 952
Variables ...................................................................................................................... 957
FDK Programmer’s Guide
13
Contents
FO_Var.......................................................................................................................... 957
FO_VarFmt ................................................................................................................... 957
5
14
FDK Programmer’s Guide
Data Types and Structures Reference ..................................................................... 961
Data types ................................................................................................................... 961
MetricT values .............................................................................................................. 962
Data structures ............................................................................................................ 963
ChannelT....................................................................................................................... 963
DirHandleT ................................................................................................................... 964
FilePathT....................................................................................................................... 964
HandleT ........................................................................................................................ 964
HashT............................................................................................................................ 964
StringListT .................................................................................................................... 964
F_AttributeDefsT.......................................................................................................... 964
F_AttributeDefT ........................................................................................................... 965
F_AttributesT................................................................................................................ 966
F_AttributeT ................................................................................................................. 966
F_CombinedFontsT ...................................................................................................... 966
F_CombinedFontT........................................................................................................ 967
F_CompareRetT............................................................................................................ 967
F_ElementLocT ............................................................................................................ 967
F_ElementRangeT ........................................................................................................ 968
F_FontEncT .................................................................................................................. 968
F_FontsT....................................................................................................................... 968
F_FontT ........................................................................................................................ 969
F_ElementCatalogEntryT ............................................................................................. 969
F_ElementCatalogEntriesT........................................................................................... 970
F_IntsT.......................................................................................................................... 970
F_MetricsT.................................................................................................................... 970
F_PointT ....................................................................................................................... 970
F_PointsT...................................................................................................................... 970
F_PropIdentT ................................................................................................................ 971
F_PropValT................................................................................................................... 971
F_PropValsT ................................................................................................................. 971
F_StringsT .................................................................................................................... 971
F_TabT.......................................................................................................................... 972
F_TabsT ........................................................................................................................ 972
F_TextItemT ................................................................................................................. 972
F_TextItemsT................................................................................................................ 976
F_TextLocT................................................................................................................... 976
F_TextRangeT............................................................................................................... 976
F_TypedValT................................................................................................................. 977
F_UBytesT.................................................................................................................... 978
F_UIntsT....................................................................................................................... 978
...
Contents
6
Error Codes .............................................................................................................. 979
7
Calling Clients Shipped with FrameMaker ............................................................ 985
Calls to work with structured documents ................................................................... 985
Calls to Sort Tables ..................................................................................................... 992
Calls for WebDAV workgroup management .............................................................. 994
Call to work with book error logs ............................................................................... 998
8
CMS Connector FrameWork ................................................................................ 1001
CMS API Data Structures and Enum Constants ....................................................... 1001
F_CMSResultT ........................................................................................................... 1001
F_CMSOpResultT ...................................................................................................... 1001
F_CMSPropertyT........................................................................................................ 1002
F_CMSItemPropertyT ................................................................................................ 1002
F_CMSItemTypeValueT............................................................................................. 1003
F_CMSItemFileTypeValueT....................................................................................... 1004
F_CMSPropertiesT ..................................................................................................... 1004
F_CMSMenuItemT..................................................................................................... 1005
F_CMSMenuTypeT .................................................................................................... 1005
F_CMSVersioningStrategyT....................................................................................... 1006
F_CMSDeleteParamT................................................................................................. 1006
F_CMSInfoT............................................................................................................... 1007
F_CMSInfosT ............................................................................................................. 1007
Error Codes ............................................................................................................... 1008
CMS API Functions .................................................................................................. 1009
F_ApiAllocateCMSInfos ............................................................................................ 1009
F_ ApiDeallocateCMSInfos ....................................................................................... 1010
F_ ApiAllocateCMSProperties ................................................................................... 1010
F_ApiDeallocateCMSProperties ................................................................................ 1011
F_ApiCMSCommand ................................................................................................. 1012
F_CMSCommandsT ................................................................................................... 1013
F_CMSCommandArgsIdT.......................................................................................... 1015
F_ApiCMSRegister .................................................................................................... 1018
F_ApiCMSCreateObject............................................................................................. 1019
F_ApiCMSEnableCommand ...................................................................................... 1020
F_ApiCMSDisableCommand..................................................................................... 1021
F_ApiCMSAddMenuEntry......................................................................................... 1022
F_ApiCMSGetProperties............................................................................................ 1023
F_ApiCMSGetProperty .............................................................................................. 1024
F_ApiCMSSetProperties ............................................................................................ 1025
F_ApiCMSSetProperty............................................................................................... 1027
F_ApiCMSConfigLoginUI......................................................................................... 1029
F_ApiCMSShowCheckoutUI ..................................................................................... 1030
F_CMSCustomizeCheckoutUI ................................................................................... 1030
F_ApiCMSShowCheckinUI ....................................................................................... 1031
F_ApiCMSShowCancelCheckoutUI .......................................................................... 1032
F_ApiCMSShowDeleteUI .......................................................................................... 1033
FDK Programmer’s Guide
15
Contents
F_ApiCMSShowCommonListUI ............................................................................... 1034
F_ApiCMSShowPropertyUI....................................................................................... 1036
F_ApiCMSShowPropertyUIWithTitle ....................................................................... 1037
F_ApiCMSShowBrowseRepositoryUI....................................................................... 1039
F_ApiCMSGetCmsIdFromName ............................................................................... 1040
F_ApiCMSGetCMSInfo............................................................................................. 1040
F_ApiCMSGetCmsIdFromSession ............................................................................ 1041
F_ApiCMSGetCmsInfoList........................................................................................ 1042
9
16
FDK Programmer’s Guide
APIs to automate the CMS connectors functionality .......................................... 1043
F_ApiCMSLogin ........................................................................................................ 1043
F_ApiCMSLogout ...................................................................................................... 1044
F_ApiCMSCheckout .................................................................................................. 1045
F_ApiCMSCheckin .................................................................................................... 1046
F_ApiCMSCancelCheckout ....................................................................................... 1047
F_ApiCMSDelete ....................................................................................................... 1048
F_ApiCMSOpenFile................................................................................................... 1049
F_ApiCMSUploadObject ........................................................................................... 1050
F_ApiCMSDownloadObject ...................................................................................... 1051
F_ApiGetCMSObjectFromPath.................................................................................. 1052
1
What’s New in FDK 2017 Release
..................................
.....
1
This chapter provides an overview of the new features in FDK 2017 Release.
Project
ESTK now provides the following functions in the Project API
Function
Use
F_ApiNewProject()
Create a project.
F_ApiOpenProject()
Open a project.
F_ApiSaveProject()
Save the current project.
F_ApiAddLocationToProject()
Add location to a project.
F_ApiDeleteComponentFromProjec
t()
Delete any folder or remove the location
from a project.
F_ApiEditComponentOfProject(
Edit the selected file in the associated
application.
)
F_ApiExploreComponentOfProje
Open the parent folder of the file.
ct()
F_ApiRenameComponentOfProjec
Rename a project component.
t()
Workspace
The following functions are defined to get the name and set a string to the current
workspace.
F_ApiGetWorkspaceName(): Used to get the name of the current workspace.
F_ApiSetCurrentWorkspace(): Sets the current workspace to the specified string.
FDK Programmer’s Guide
17
1
What’s New in FDK 2017 Release
Search text within a list
Search text within a list
The new F_ApiInitListViewSearch() method is used to search for text within
a specified list in a dialog.
Rectangle values for client dialog
The new F_ApiGetDialogInitialRect()is used to get the initial rectangle
values for any client dialog or pod.
Update TOC in all documents within a book
The FS_UpdateBookInlineComponents()is used to update mini table of
contents in all documents within a book.
Right to Left number handling
The FA_Note_RTL_NumberUtility()is a function used for client defined
number handling. It has the following four values:
FV_ITON: Indic to Numeric numbers.
FV_NTOI: Numeric to Indic numbers.
FV_FTON: Farsi to Numeric numbers.
FV_NTOF: Numeric to Farsi numbers.
Maximum references levels in DITA file
The FS_DitaMaxRefLevels()is a function used to specify the number of
reference levels to be opened while opening a DITA file.
18
FDK Programmer’s Guide
2
Function Summary
..................................
.....
2
This chapter lists the FDK functions by topic. If you know what you want to do, but
don’t know which function to use, look it up in this chapter. If you know the name of a
function and want a complete description of it, look it up in Chapter 3, “FDK Function
Reference.”
The functions are listed under all the topics to which they apply, so some functions
appear more than once.
FDK Programmer’s Guide
19
2
Function Summary
Client-defined callback functions
To
Use this function
Respond to the user choosing a menu item
created by your client
F_ApiCommand()
Respond to the FrameMaker product’s
initialization message
F_ApiInitialize()
Respond to the user clicking a hypertext
marker or inset
F_ApiMessage()
Respond to the user or another client executing
operations such as Open or Save
F_ApiNotify()
Turn a notification on or off
F_ApiNotification()
Respond to the user interacting with a clientdefined dialog box
F_ApiDialogEvent()
Set a callback function that is called for setting
the username/password information before
performing the NetLib related authentication.
F_ApiNetLibSetAuthFunction()
Set a return value for a client-defined callback
function
F_ApiReturnValue()
Books
20
To
Use this function
Close a book
F_ApiClose()
Compare two books
F_ApiCompare()
Create a book
F_ApiNewNamedObject()
Generate/update files for a book
F_ApiSimpleGenerate()
F_ApiUpdateBook()
Import element definitions to a book
F_ApiSimpleImportElementDefs()
Import formats from a document to a book
F_ApiSimpleImportFormats()
Insert a book component of a specified
type at a specified position in a structured
FrameMaker book.
F_ApiNewBookComponentOfTypeInHierarchy()
Move a book component within the book.
F_ApiMoveComponent()
Open a book (the easy way)
F_ApiSimpleOpen()
FDK Programmer’s Guide
To
Use this function
Open a book (with a script)
F_ApiOpen()
Print a book
F_ApiSilentPrintDoc()
Save a book (the easy way)
F_ApiSimpleSave()
Save a book (with a script)
F_ApiSave()
Write entries to the book error log
F_ApiCallClient()
FDK Programmer’s Guide
...
Function Summary
21
2
Function Summary
Characters
To
Use this function
Convert a character to lowercase
F_CharToLower()
Convert a character to uppercase
F_CharToUpper()
Convert a UTF-8 character to lowercase
F_CharToLowerUTF8()
F_CharIsAlphabetic()
22
Determine whether a character is
alphanumeric
F_CharIsAlphaNumeric()
Determine whether a character is a
FrameMaker product control character
F_CharIsControl()
Determine whether a character is a
FrameMaker end-of-line character
F_CharIsEol()
Determine whether a character is hexadecimal
F_CharIsHexadecimal()
Determine whether a character is lowercase
F_CharIsLower()
Determine whether a character is numeric
F_CharIsNumeric()
Determine whether a character is uppercase
F_CharIsUpper()
Determine whether a specified UTF-8
character is an alphanumeric character
F_CharIsAlphaNumericUTF8()Deter
mine whether a character is alphabetic
Determine whether a specified character is a
FrameMaker control character.
F_CharIsControlUTF8()
Determine whether a specified character is a
FrameMaker end-of-line (EOL) character.
F_CharIsEolUTF8()
Determine whether a specified UTF-8
character is a hexadecimal digit
F_CharIsHexadecimalUTF8()
Determine whether a specified UTF-8
character is a lowercase character
F_CharIsLowerUTF8()
Determine whether a specified UTF-8
character is a numeric character in a decimal
system.
F_CharIsNumericUTF8()
Determine whether a specified UTF-8
character is an uppercase character
F_CharIsUpperUTF8()
FDK Programmer’s Guide
...
Function Summary
Clipboard
To
Use this function
Copy selection to the Clipboard
F_ApiCopy()
Clear selection
F_ApiClear()
Cut selection to the Clipboard
F_ApiCut()
Paste contents of the Clipboard
F_ApiPaste()
Pop the entry at the top of the Clipboard stack to
the Clipboard
F_ApiPopClipboard()
Push the Clipboard contents onto the Clipboard
stack
F_ApiPushClipboard()
Commands and menus
To
Use this function
Add a command to a menu
F_ApiAddCommandToMenu()
Add a menu to a menu or menu bar
F_ApiAddMenuToMenu()
Add a menu item separator to a menu
F_ApiAddCommandToMenu()
Allow user to choose a command by typing in
the document window Tag area
F_ApiQuickSelect()
Arrange the menu items on a menu
F_ApiSetId()
Arrange the menus on a menu or menu bar
F_ApiSetId()
Create a command
F_ApiDefineCommand()
Create a command and add it to a menu
F_ApiDefineAndAddCommand()
Create a menu
F_ApiDefineMenu()
Create a menu and add it to a menu or menu bar
F_ApiDefineAndAddMenu()
Determine if a menu or command exists
F_ApiGetNamedObject()
Determine if a menu or menu item is on a menu
or menu bar
F_ApiMenuItemInMenu()
Get the ID of a menu, command or menu item
separator with a specified name
F_ApiGetNamedObject()
Respond to the user executing a command
created by your client
F_ApiCommand()
FDK Programmer’s Guide
23
2
24
Function Summary
To
Use this function
Load a menu customization file
F_ApiLoadMenuCustomizationFil
e()
Remove amenu item, menu item separator,
menu, or command
F_ApiDelete()
FDK Programmer’s Guide
...
Function Summary
Data structures: copying
To
Use this function
Copy an F_AttributesT structure
F_ApiCopyAttributes()
Copy an F_AttributeDefsT structure
F_ApiCopyAttributeDefs()
Copy an F_ElementCatalogEntriesT structure
F_ApiCopyElementCatalog
Entries()
Copy an F_AttributesT structure
F_ApiCopyAttributes()
Copy an F_IntsT structure
F_ApiCopyInts()
Copy an F_MetricsT structure
F_ApiCopyMetrics()
Copy an F_PointsT structure
F_ApiCopyPoints()
Copy an F_PropValT structure
F_ApiCopyPropVal()
Copy an F_PropValsT structure
F_ApiCopyPropVals()
Copy a StringT variable
F_ApiCopyString()
Copy an F_StringsT structure
F_ApiCopyStrings()
Copy an F_TabT structure
F_ApiCopyTab()
Copy an F_TabsT structure
F_ApiCopyTabs()
Copy an F_TextItemT structure
F_ApiCopyTextItem()
Copy an F_TextItemsT structure
F_ApiCopyTextItems()
Copy an F_UBytesT structure
F_ApiCopyUBytes()
Copy an F_UIntsT structure
F_ApiCopyUInts()
Copy an F_ValT structure
F_ApiCopyVal()
Debugging
To
Use this function
Print the current API error status
F_ApiPrintFAErrno()
Print status flags returned by a call to
F_ApiImport()
F_ApiPrintImportStatus()
Print status flags returned by a call to F_ApiOpen()
F_ApiPrintOpenStatus()
FDK Programmer’s Guide
25
2
26
Function Summary
To
Use this function
Print the status flags returned by a call to
F_ApiSave()
F_ApiPrintSaveStatus()
Print the status flags returned by a call to
F_ApiUpdateBook()
F_ApiPrintUpdateBookStatu
s()
Print a property-value pair
F_ApiPrintPropVal()
Print the property-value pairs in a property list
F_ApiPrintPropVals()
Print the text in a single text item
F_ApiPrintTextItem()
Print the text in a set of text items (F_TextItemsT
structure)
F_ApiPrintTextItems()
FDK Programmer’s Guide
...
Function Summary
DITA references: updating
To
Use this function
Update the DITA object represented by the
specified element.
F_ApiUpdateDITAReference()
Update all DITA references of the specified
type. For example, you can use this API to
update all conrefs, all xrefs, or all conrefs as
well as xrefs.
F_ApiUpdateDITAReferences()
Dialog boxes: predefined
To
Use this function
Display an OK/Cancel or Continue dialog box
with a specified message
F_ApiAlert()
Display a dialog box that allows the user to
select a file or directory
F_ApiChooseFile()
Display a dialog box that prompts the user for
an integer value
F_ApiPromptInt()
Display a dialog box that prompts the user for a
metric value
F_ApiPromptMetric()
Display a dialog box that prompts the user for a
string
F_ApiPromptString()
Display dialog boxes similar to FrameMaker’s
Open and Save dialog boxes
F_ApiChooseFileExEx ()
Display a scroll list that allows the user to
choose from a list of items you provide
F_ApiScrollBox()
Dialog boxes: client-defined
To
Use this function
Close a dialog box
F_ApiClose()
Display a dialog resource as a modal dialog box
F_ApiModalDialog()
Display a dialog resource as a modeless dialog
box
F_ApiModelessDialog()
FDK Programmer’s Guide
27
2
28
Function Summary
To
Use this function
Get the ID of an item in a dialog box from its
item number
F_ApiDialogItemId()
Get the string entered in a text field
F_ApiGetString()
Get the state of a button, checkbox,
radio button, text box, pop-up menu,
or scroll list
F_ApiGetInt()
Get the intial rectangle values for the Publisher
pod.
F_ApiGetDialogInitialRect()
Keep a client-defined modal dialog box on the
screen after the user has clicked an item in it
F_ApiReturnValue()
Open a dialog resource
F_ApiOpenResource()
Respond to the user interacting with a clientdefined dialog box
F_ApiDialogEvent()
Set the string entered in a text field
F_ApiSetString()
Set the list of strings that appears in a scroll list
or pop-up menu
F_ApiSetStrings()
Set the state of a button, checkbox,
radio button, text box, pop-up menu, or scroll
list
F_ApiSetInt()
FDK Programmer’s Guide
...
Function Summary
Documents: comparing
To
Use this function
Compare two documents
F_ApiCompare()
Documents: file operations
To
Use this function
Check status bit in status scripts returned by
F_ApiOpen() or F_ApiSave()
F_ApiCheckStatus()
Close (quit) a document
F_ApiClose()
Create a new custom document
F_ApiCustomDoc()
Create a new document from a template
F_ApiSimpleNewDoc()
Create a new document using a script
F_ApiOpen()
Get a default property list for use with
F_ApiOpen()
F_ApiGetOpenDefaultParams()
Get a default property list for use with
F_ApiSave()
F_ApiGetSaveDefaultParams()
Get a default property list for use with
F_ApiImport()
F_ApiGetImportDefaultParams()
Import a text or graphics file
F_ApiImport()
Open a document (the easy way)
F_ApiSimpleOpen()
Open a document (with a script)
F_ApiOpen()
Print a document
F_ApiSilentPrintDoc()
Save a document (the easy way)
F_ApiSimpleSave()
Save a document (with a script)
F_ApiSave()
Apply an attribute expression to a document
to perform attribute-based-filtering.
F_ApiApplyAttributeExpression()
Apply an attribute-based expression to the
document and the filtered text is displayed in
the specified color.
F_ApiPreviewAttributeExpression
()
Apply an attribute-based expression to the
document where the filtered text is converted
to conditional text.
F_ApiApplyAttributeExpressionAs
Condition()
FDK Programmer’s Guide
29
2
Function Summary
Documents: formatting
To
Use this function
Accept all the tracked changes in the specified
document
F_ApiTrackChangesAcceptAll
()
Apply a page’s layout to another page
F_ApiApplyPageLayout()
Clear the change bars for a document
F_ApiClearAllChangeBars()
Redisplay a document after FP_Displaying
has been turned off
F_ApiRedisplay()
Reformat a document after FP_Reformatting
has been turned off
F_ApiReformat()
Rehyphenate words in a document
F_ApiRehyphenate()
Reject all the tracked changes in the specified
document
F_ApiTrackChangesRejectAll
()
Reset equation settings for a document
F_ApiResetEqnSettings()
Reset reference frames
F_ApiResetReferenceFrames()
Restart paragraph numbering for a document
F_ApiRestartPgfNumbering()
Documents: updating
30
To
Use this function
Import formats from another document
F_ApiSimpleImportFormats()
Import element definitions to a document
F_ApiSimpleImportElementDefs()
Updates a specified cross-reference in the
document.
F_ApiUpdateXRef()
Update the cross-references in a document
F_ApiUpdateXRefs()
Convert the cross-references in a document to
text
F_ApiConvertXrefToText ()
Update a text inset
F_ApiUpdateTextInset()
Update the variables in a document
F_ApiUpdateVariables()
FDK Programmer’s Guide
...
Function Summary
F-codes
To
Use this function
Execute a set of f-codes
F_ApiFcodes()
Files, directories, and filepaths
To
Use this function
Copy a filepath (platform-independent representation
of a pathname)
F_FilePathCopy()
Convert a filepath to a platform-specific or platformindependent pathname
F_FilePathToPathName()
Convert a platform-specific or platform-independent
pathname to a filepath
F_PathNameToFilePath()
Close a directory handle opened with
F_FilePathOpenDir()
F_FilePathCloseDir()
Create a directory
F_MakeDir()
Delete a file specified by a filepath
F_DeleteFile()
Determine which platform naming conventions a
pathname uses
F_PathNameType()
Free the memory used by a filepath
F_FilePathFree()
Get the basename (base directory name or filename)
specified by a filepath
F_FilePathBaseName()
Get the filepath associated with a specified channel
F_GetFilePath()
Get the next file in a directory specified by a handle
opened with F_FilePathOpenDir()
F_FilePathGetNext()
Get the parent directory of a specified file or directory
F_FilePathParent()
Get the permissions and other information for a
specified file or directory
F_FilePathProperty()
Open and return a handle that can be used to obtain the
file and subdirectory entries in a specified directory
F_FilePathOpenDir()
Rename a file
F_RenameFile()
Reset a directory’s handle so that the next call to
F_FilePathGetNext() returns the first file or
directory entry in the directory
F_ResetDirHandle()
FDK Programmer’s Guide
31
2
Function Summary
Fonts
To
Use this function
Get the angles, variations, and weights
available for a specified font or combined font
F_ApiFamilyFonts()
Get the character encoding for a specified font
or font family
F_ApiGetEncodingForFamily()
Get and set character encoding data for a
session
F_ApiGetSupportedEncodings()
F_ApiCombinedFamilyFonts()
F_ApiGetEncodingForFont()
F_ApiIsEncodingSupported()
F_FontEncId()
F_FontEncName()
Graphic insets
To
Use this function
Create a graphic inset
F_ApiImport()
F_ApiNewGraphicObject()
32
Delete a facet
F_ApiDeletePropByName()
Query an integer (IntT) facet
F_ApiGetIntByName()
Query a metric (MetricT) facet
F_ApiGetMetricByName()
Query an unsigned bytes
(F_UBytesT) facet
F_ApiGetUBytesByName()
Respond to the user clicking an inset
F_ApiMessage()
Set an integer (IntT) facet
F_ApiSetIntByName()
Set a metric (MetricT) facet
F_ApiSetMetricByName()
Set an unsigned bytes (F_UBytesT) facet
F_ApiSetUBytesByName()
FDK Programmer’s Guide
...
Function Summary
Hash tables
To
Use this function
Add an entry to a hash table
F_HashSet()
Call a specified function with the key and
datum of each entry in a hash table
F_HashEnumerate()
Create a hash table
F_HashCreate()
Delete a hash table and all its entries
F_HashDestroy()
Get an entry from a hash table
F_HashGet()
Remove an entry from a hash table
F_HashRemove()
Create a hash table
F_HashReportOnData()
Hypertext
To
Use this function
Execute a hypertext command
F_ApiHypertextCommand()
I/O
To
Use this function
Append the contents of one channel to another
F_ChannelAppend()
Close a channel
F_ChannelClose()
Close a temporary channel
F_ChannelCloseTmp()
Create a temporary channel
F_ChannelMakeTmp()
Determine whether the end of a channel has been read
F_ChannelEof()
Flush buffered output to a channel
F_ChannelFlush()
Get the size of a channel
F_ChannelSize()
Get the byte after the current position in a channel
F_ChannelPeek()
Get the offset of the current byte relative to the
beginning of an input channel
F_ChannelTell()
Open a channel
F_ChannelOpen()
FDK Programmer’s Guide
33
2
Function Summary
To
Use this function
Read from a channel
F_ChannelRead()
F_ReadBytes()
F_ReadLongs()
F_ReadShorts()
Read formatted input
F_Scanf()
F_Sscanf()
Set the position for the next input operation in a
channel
F_ChannelSeek()
Set the byte order of a channel so that subsequent I/O
calls will swap bytes if the platform is big endian
F_SetByteOrder()
Set the byte order of a channel so that subsequent I/O
calls will swap bytes if the platform is little endian
F_ResetByteOrder()
Write to a channel
F_ChannelWrite()
F_WriteBytes()
F_WriteLongs()
F_WriteShorts()
Write formatted output
F_Printf()
F_Sprintf()
Insets
See “Graphic insets” on page 32 and “Text insets” on page 56.
34
FDK Programmer’s Guide
...
Function Summary
Key Catalogs
To
Use this function
Create a new key catalog
F_ApiNewKeyCatalog()
Find a key catalog with the specified
tag.
F_ApiGetKeyCatalog()
Add a new key definition to the specified
key catalog.
F_ApiNewKeyDefinition()
Update the specified key definition field
for the specified key in the specified key
catalog
F_ApiUpdateKeyDefinition()
Get the specified key definition field for
the specified key from the specified key
catalog.
F_ApiGetKeyDefinition()
Get all the key definitions from the
specified key catalog.
F_ApiGetAllKeyDefinitions()
Delete all the key definitions in the
specified key catalog.
F_ApiDeleteAllKeyDefinitions()
Get all the key tags from the specified
key catalog.
F_ApiGetAllKeys()
Memory: allocating and deallocating structures
To
Use this function
Allocate memory for a property list
F_ApiAllocatePropVals()
Allocate memory for text items (an
F_TextItemsT structure)
F_ApiAllocateTextItems()
Exit and free all resources used by client
F_ApiBailOut()
Deallocate memory for a property (an
F_PropValT structure)
F_ApiDeallocateProp()
Deallocate memory for a property list (an
F_PropValsT structure)
F_ApiDeallocatePropVals()
Deallocate memory for text items (an
F_TextItemsT structure)
F_ApiDeallocateTextItems()
FDK Programmer’s Guide
35
2
36
Function Summary
To
Use this function
Deallocate memory for an F_FontsT
strcture
F_ApiDeallocateFonts()
Deallocate memory for an F_IntsT
structure
F_ApiDeallocateInts()
Deallocate memory for an F_MetricsT
structure
F_ApiDeallocateMetrics()
Deallocate memory for an F_PointsT
structure
F_ApiDeallocatePoints()
Deallocate memory for a StringT
variable
F_ApiDeallocateString()
Deallocate memory for an F_StringsT
structure
F_ApiDeallocateStrings()
Deallocate memory for an F_TabT
structure
F_ApiDeallocateTab()
Deallocate memory for an F_TabsT
structure
F_ApiDeallocateTabs()
Deallocate memory for an F_UbytesT
structure
F_ApiDeallocateUBytes()
Deallocate memory for an F_UIntsT
structure
F_ApiDeallocateUInts()
FDK Programmer’s Guide
...
Function Summary
Memory: manipulating with handles
To
Use this function
Allocate a block of memory to a handle
F_AllocHandle()
Allocate a new block of memory to a handle
and copy the contents of a specified block of
memory to it
F_DuplicateHandle()
Compare two blocks of memory specified by
handles
F_HandleEqual()
Free a block of memory specified by a handle
F_FreeHandle()
Get the size of a handle’s block of data
F_GetHandleSize()
Initialize a block of memory specified by a
handle to 0
F_ClearHandle()
Lock a handle and return the address of the
data block of the handle
F_LockHandle()
Reallocate a block of memory
F_ReallocHandle()
Specify a direct straight exit function for the
FDE to call when memory allocation fails
F_SetDSExit()
Unlock a handle
F_UnlockHandle()
Memory: manipulating with pointers
To
Use this function
Allocate a block of memory to a pointer
F_Alloc()
F_Calloc()
Allocate a new block of memory to a pointer
and copy the contents of a specified block of
memory to it
F_DuplicatePtr()
Compare two blocks of memory specified by
pointers
F_PtrEqual()
Copy the contents of a block of memory to
another block of memory
F_CopyPtr()
Free a block of memory specified by a pointer
F_Free()
Initialize a block of memory specified by a
pointer to 0
F_ClearPtr()
FDK Programmer’s Guide
37
2
Function Summary
To
Use this function
Reallocate a block of memory to a pointer
F_Realloc()
Specify a direct straight exit function for the
FDE to call when memory allocation fails
F_SetDSExit()
Menus
See “Commands and menus” on page 23.
38
FDK Programmer’s Guide
...
Function Summary
Metrics
To
Use this function
Compare two metric numbers
F_MetricApproxEqual()
Compute the square root of a metric number
F_MetricSqrt()
Compute the square of a metric number
F_MetricSquare()
Constrain a specified angle to a specified range of
degrees
F_MetricConstrainAngle()
Construct a metric number from a fraction
F_MetricMake()
Convert a metric number to a real number
F_MetricToFloat()
Convert a real number to a metric number
F_MetricFloat()
Divide two metric numbers
F_MetricDiv()
Multiply a metric value by a fraction
F_MetricFractMul()
Multiply two metric numbers
F_MetricMul()
Normalize a specified angle between 0 and 360
degrees
F_MetricNormalizeAngle()
Maker Interchange Format (MIF)
To
Use this function
Indent and start a new MIF statement and
automatically increase the indent level
F_MifBegin()
Write a comment string to the MIF write channel
F_MifComment()
Write a real number with n digits after the decimal
point
F_MifDecimal()
Indent and finish a MIF statement
F_MifEnd()
Return the current indent level of the MIF write
channel
F_MifGetIndent()
Indent the output channel according to the indent
level
F_MifIndent()
Decrease the indent level
F_MifIndentDec()
Increase the indent level
F_MifIndentInc()
Write an integer to the MIF write channel
F_MifInteger()
FDK Programmer’s Guide
39
2
40
Function Summary
To
Use this function
Write a new line to the MIF write channel
F_MifNewLine()
Set the indent level of the MIF write channel
F_MifSetIndent()
Set a channel to receive MIF output
F_MifSetOutputChannel()
Write a blank space to the MIF output channel
F_MifSpace()
Write a tab to the MIF channel
F_MifTab()
Write a simple text string to the MIF output channel
F_MifText()
Write a text string enclosed in single quotes (`') to
the MIF channel
F_MifTextString()
FDK Programmer’s Guide
...
Function Summary
Objects: creating and deleting
To
Use this function
Add a Boolean conditional expression to
the document
F_ApiAddNewBuildExpr()
F_ApiDeleteBuildExpr()
Apply the Boolean conditional
expression to the document.
F_ApiSetActiveBuildExpr()
Pre-register a given server with the
provided username and password, so that
instead of prompting the user for
authentication, the server uses the login
information when required.
F_ApiNetLibAuthenticateServer()
Return the name of the active expression
in the document
F_ApiGetActiveBuildExpr()
Return the Boolean conditional
expression in the document with the
given name
F_ApiGetBuildExpr()
Return an array of all Boolean
conditional expression names in the
document
F_ApiGetBuildExprCatalog()
Upload a folder and subfolders to the
server.
F_ApiNetLibUploadFolder()
Create an anchored object, such as a
marker or an anchored frame
F_ApiNewAnchoredObject()
Create a book component in a structured
book
F_ApiNewBookComponentInHierarchy()
Create a column in a table
F_ApiAddCols()
Create a client text inset
F_ApiNewAnchoredObject()
Create a format rule, format rule clause,
or format change list
F_ApiNewSubObject()
Create a formatted anchored object, such
as a table, variable, or cross-reference
F_ApiNewAnchoredFormattedObject()
Create a graphic object, such as a text
column or an oval
F_ApiNewGraphicObject()
Create a named object, such as a
reference page
F_ApiNewNamedObject()
Create a row in a table
F_ApiAddRows()
FDK Programmer’s Guide
41
2
42
Function Summary
To
Use this function
Create a series object, such as a
paragraph, body page, or book
component
F_ApiNewSeriesObject()
Create a structural element in a
Structured document
F_ApiNewElement()
Create a table with a specified number of
rows and columns
F_ApiNewTable()
Create a structural element in a
Structured document
or book
F_ApiNewElementInHierarchy()
Create a text or graphic inset
F_ApiImport()
Delete unused formats (character,
paragraph, or table) from the document
F_ApiDeleteUnusedFmts()
Delete an object
F_ApiDelete()
FDK Programmer’s Guide
...
Function Summary
Objects: getting IDs
To
Use this function
Get the ID of an object with a specified
persistent identifier
F_ApiGetUniqueObject()
Get the ID of an object that has a specified
name
F_ApiGetNamedObject()
Query an ID (F_ObjHandleT) property
F_ApiGetId()
Printing
To
Use this function
Print a document
F_ApiSilentPrintDoc()
Specify the number of copies of a document to
print and other integer print properties
F_ApiSetInt()
Specify the printer to which to print a document
and other string print properties
F_ApiSetString()
Project
To
Use this function
Create a project
F_ApiNewProject()
Open a project
F_ApiOpenProject()
Save the current project
F_ApiSaveProject()
Add location to a project
F_ApiAddLocationToProject()
Delete any folder or remove the location from a
project
F_ApiDeleteComponentFrom
Project()
Edit the selected file in the associated application
F_ApiEditComponentOfProject(
)
Open the parent folder of the file
F_ApiExploreComponentOfProje
ct()
Rename a project component
F_ApiRenameComponentOfProjec
t()
FDK Programmer’s Guide
43
2
Function Summary
Properties
To
Use this function
Get an element definition’s attribute definitions
F_ApiGetAttributeDefs()
Get an element’s attributes
F_ApiGetAttributes()
Get a document’s element catalog
F_ApiGetElementCatalog()
Query a property of any type
F_ApiGetPropVal()
Query an array of integers (F_IntsT) property
F_ApiGetInts()
Query an ID (F_ObjHandleT) property
F_ApiGetId()
Query an integer (IntT) property
F_ApiGetInt()
Query a metric (MetricT) property
F_ApiGetMetric()
Query a metrics (F_MetricsT) property
F_ApiGetMetrics()
Query an array of points (F_PointsT) property for
a polygon or polyline
F_ApiGetPoints()
Query a string (StringT) property
F_ApiGetString()
Query a strings (F_StringsT) property
F_ApiGetStrings()
Query a text location (F_TextLocT) property
F_ApiGetTextLoc()
Query a text range (F_TextRangeT) property
F_ApiGetTextRange()
Query the text properties (for example, character
tag, font family, font weight) for a text range
F_ApiGetTextProps()
F_ApiGetTextPropVal()
F_ApiGetTextVal()
44
Retrieve the array of tabs (F_TabsT) for a
paragraph or paragraph format
F_ApiGetTabs()
Retrieve the entire property list (F_PropValsT) for
an object
F_ApiGetProps()
Set an element definition’s attribute definitions
F_ApiSetAttributeDefs()
Set an element’s attributes
F_ApiSetAttributes()
Set a property of any type
F_ApiSetPropVal()
Set an array of integers (F_IntsT) property
F_ApiSetInts()
Set an ID (F_ObjHandleT) property
F_ApiSetId()
Set an integer (IntT) property
F_ApiSetInt()
Set a metric (MetricT) property
F_ApiSetMetric()
FDK Programmer’s Guide
To
Use this function
Set a metrics (F_MetricsT) property
F_ApiSetMetrics()
Set a text location (F_TextLocT) property
F_ApiSetTextLoc()
Set the entire property list (F_PropValsT) for an
object
F_ApiSetProps()
Set an array of points (F_PointsT) property
F_ApiSetPoints()
Set a string (StringT) property
F_ApiSetString()
Set a strings (F_StringsT) property
F_ApiSetStrings()
Set a tabs (F_TabsT) property
F_ApiSetTabs()
Set the text properties (for example, character tag,
font family, font weight) for a text range
F_ApiSetTextProps()
...
Function Summary
F_ApiSetTextPropVal()
F_ApiSetTextVal()
Set a text range (F_TextRangeT) property
F_ApiSetTextRange()
FDK Programmer’s Guide
45
Selection
To
Use this function
Determine where the insertion point or selected text
is
F_ApiGetTextRange()
Get the element selection in a Structured document
F_ApiGetElementRange()
Set the text selection or insertion point by setting the
property that specifies the text selection
(FP_TextSelection)
F_ApiSetTextRange()
Select cells in a table
F_ApiMakeTblSelection()
Get the IDs of selected graphic objects
F_ApiGetId()
Set the element selection in a Structured document
F_ApiSetElementRange()
Scroll the document to display the currenttrext
range
F_ApiScrollToText()
Sessions
To
Use this function
Quit a session
F_ApiClose()
Sleep
To
Use this function
Suspend FrameMaker product and client operation
for specified number of seconds
F_ApiSleep()
Suspend FrameMaker product and client operation
for specified number of microseconds
F_ApiUSleep()
String lists
To
Use this function
Append a string to a string list
F_StrListAppend()
Concatenate two string lists
F_StrListCat()
To
Use this function
Copy a string from a string list to a string of a
specified size
F_StrListCopy()
Copy an entire string list
F_StrListCopyList()
Create a string list
F_StrListNew()
Free a string list
F_StrListFree()
Get the nth string in a string list
F_StrListGet()
Get the first string in a string list
F_StrListFirst()
Get the last string in a string list
F_StrListLast()
Get the position of a specified string in a string list
F_StrListIndex()
Get the position of a specified string in a string list,
ignoring case
F_StrListIIndex()
Get the length of a string list
F_StrListLen()
Insert a string in a string list
F_StrListInsert()
Remove a specified string from a string list
F_StrListRemove()
Copy a string to a specified position in a string list
F_StrListSetString()
Sort a string list using a specified comparison
function
F_StrListSort()
FDK Programmer’s Guide
...
Function Summary
47
2
Function Summary
Strings: allocating, copying, and deallocating
To
Use this function
Allocate a new string
F_StrNew()
Copy a string, allocating memory for the new string
F_StrCopyString()
Copy a string to memory that is already allocated
F_StrCpy()
Copy a specified number of characters of
a string
F_StrCpyN()
Deallocate a string
F_Free()
Strings: comparing and parsing
To
Use this function
Compare two strings
F_StrCmp()
F_StrEqual()
Compare two strings, ignoring case
F_StrICmp()
F_StrIEqual()
48
Compare two strings up to a specified number of
characters
F_StrEqualN()
Compare two strings up to a specified number of
characters, ignoring case
F_StrICmpN()
Determine whether a string is a prefix of another string
F_StrPrefix()
Determine whether a string is a prefix of another string,
up to a specified number of characters
F_StrPrefixN()
Determine whether a string is a prefix of another string,
ignoring case
F_StrIPrefix()
Determine whether a string is a substring of another
string
F_StrSubString()
Determine whether a string is a suffix of another string
F_StrSuffix()
Parse a string into tokens
F_StrTok()
Return a pointer to the first occurrence in a string of any
of a specified set of characters
F_StrBrk()
FDK Programmer’s Guide
F_StrCmpN()
F_StrIEqualN()
To
Use this function
Return a pointer to the first occurrence of a character in
a string
F_StrChr()
Return a pointer to the first occurrence of a character in
a string, starting from the end of the string
F_StrRChr()
FDK Programmer’s Guide
...
Function Summary
49
2
Function Summary
Strings: concatenating
To
Use this function
Concatenate two strings
F_StrCat()
Concatenate two strings, limiting the result to a specified
number of characters
F_StrCatN()
Concatenate a string and an integer, limiting the result to a
specified number of characters
F_StrCatIntN()
Concatenate a string and a character, limiting the result to a
specified number of characters
F_StrCatCharN()
Strings: miscellaneous
50
To
Use this function
Convert a string to an integer
F_StrAlphaToInt()
Convert a string to a real number
F_StrAlphaToReal()
Get the length of a string
F_StrLen()
Reverse a string
F_StrReverse()
Strip a specified set of characters from
a string
F_StrStrip()
Strip leading spaces from a string
F_StrStripLeadingSpaces()
Strip trailing spaces from a string
F_StrStripTrailingSpaces()
Truncate a string at a specified position
F_StrTrunc()
FDK Programmer’s Guide
...
Function Summary
Strings: encoded
To
Use this function
Perform string operations on double-byte text that
similar to the operations you can perform on
single-byte text
F_StrCatDblCharNEnc()
F_StrCatNEnc()
F_StrChrEnc()
F_StrCmpNEnc()
F_StrConvertEnc()
F_StrCpyNEnc()
F_StrICmpEnc()
F_StrICmpNEnc()
F_StrIEqualEnc()
F_StrIEqualNEnc()
F_StrIPrefixEnc()
F_StrISuffixEnc()
F_StrLenEnc()
F_StrRChrEnc()
F_StrTruncEnc()
Get encoding information for a font or font family
F_ApiGetEncodingForFamily()
F_ApiGetEncodingForFont()
Get and set encoding data for a session
F_ApiGetSupportedEncodings()
F_ApiIsEncodingSupported()
F_FontEncId()
F_FontEncName()
Initialize encoding data for a session
F_FdeInitFontEncs()
Structure: manipulating elements
To
Use this function
Add an element to a location in the
structural hierarchy of a Structured
document or book
F_ApiNewElementInHierarchy()
Copy attributes
F_ApiCopyAttribute()
F_ApiCopyAttributes()
FDK Programmer’s Guide
51
2
Function Summary
To
Use this function
Copy newly added structures—perform a
deep copy and copy any arrays or strings
referenced by the structure.
F_ApiCopyStructureTypes
Create a book component in a structured
book
F_ApiNewBookComponentIn
Hierarchy()
Create an element in a document
F_ApiNewElement()
Deallocate attributes
F_ApiDeallocateAttributes()
Deallocate memory referenced by the
newly added structures—perform a deep
deallocation and deallocates any arrays or
strings referenced by the structure.
F_ApiDeallocateStructureType()
Delete an element, but leave its contents in
the document
F_ApiUnWrapElement()
Demote an element
F_ApiDemoteElement()
Get an element’s attributes
F_ApiGetAttributes()
Get current valid elements for the insertion
point
F_ApiGetElementCatalog()
Get the element selection
F_ApiGetElementRange()
Insert an element around the selected text
and elements
F_ApiWrapElement()
Insert a book component of a specified type
at a specified position in a structured
F_ApiNewBookComponentOfTypeInHierarchy()
Merge selected elements into the first
element
F_ApiMergeIntoFirst()
Merge selected elements into the last
element
F_ApiMergeIntoLast()
Promote an element
F_ApiPromoteElement()
Set the element selection in a Structured
document or book
F_ApiSetElementRange()
Set an element’s attributes
F_ApiSetAttributes()
Split one element into two
F_ApiSplitElement()
FrameMaker book.
52
FDK Programmer’s Guide
...
Function Summary
Structure: manipulating element definitions and format rules
To
Use this function
Check the value of an element definition to
determine that the element is text and not a
real element
F_ApiElementDefIsText()
Copy attribute definitions
F_ApiCopyAttributeDef()
F_ApiCopyAttributeDefs()
Create a format change list
(FO_FmtChangeList object)
F_ApiNewNamedObject()
Create a format rule (FO_FmtRule object)
F_ApiNewSubObject()
Create a format rule clause
(FO_FmtRuleClause object)
F_ApiNewSubObject()
Deallocate attribute definitions
F_ApiDeallocateAttributeDefs()
Delete a format change list from the format
change list catalog
F_ApiDelete()
Delete a format rule or format rule clause
F_ApiDelete()
Get an element definition’s attribute
definitions
F_ApiGetAttributeDefs()
Get the ID of a format change list
F_ApiGetNamedObject()
Import element definitions to a document
F_ApiSimpleImportElementDefs()
Set an element definition’s attribute
definitions
F_ApiSetAttributeDefs()
F_ApiNewSubObject()
Tables
To
Use this function
Add columns to a table
F_ApiAddCols()
Add rows to a table
F_ApiAddRows()
Create a new table
F_ApiNewTable()
Delete columns from a table
F_ApiDeleteCols()
Delete rows from a table
F_ApiDeleteRows()
F_ApiDelete()
Delete a table
F_ApiDelete()
FDK Programmer’s Guide
53
2
54
Function Summary
To
Use this function
Select cells in a table
F_ApiMakeTblSelection()
Straddle cells in a table
F_ApiStraddleCells()
Unstraddle cells in a table
F_ApiUnStraddleCells()
FDK Programmer’s Guide
...
Function Summary
Text
To
Use this function
Clear text selection from a document
F_ApiClear()
Copy text selection from a document to the
Clipboard
F_ApiCopy()
Cut text selection from a document to the
Clipboard
F_ApiCut()
Delete text from a paragraph or graphic text line
F_ApiDeleteText()
Get the text (array of text items) that an object
contains
F_ApiGetText()
Get the text (array of text items) that an text range
contains
F_ApiGetTextForRange()
Get a text property (for example, character tag,
font family, font weight) for a text location
F_ApiGetTextPropVal()
F_ApiGetTextVal()
Get all the text properties for a text location
F_ApiGetTextProps()
Insert text in a paragraph, graphic text line, or
client text inset
F_ApiAddText()
Paste Clipboard contents at insertion point in a
document
F_ApiPaste()
Query a text range property
F_ApiGetTextRange()
Set a text property for a text range
F_ApiSetTextPropVal()
F_ApiSetTextVal()
Set all the text properties for a text range
F_ApiSetTextProps()
Set a text range property
F_ApiSetTextRange()
Text: find and replace
To
Use this function
Execute the find and replace command from an
API client
F_ApiFind()
FDK Programmer’s Guide
55
2
Function Summary
Text insets
To
Use this function
Add text to a client text inset
(FO_TiApiClient object)
F_ApiAddText()
Convert a locked text inset range to text
F_ApiConvertToText()
Create a Frame product text inset
(FO_TiFlow, FO_TiText, or
FO_TiTextTable object)
F_ApiImport()
Create a client text inset
F_ApiNewAnchoredObject()
Delete a text inset
F_ApiDelete()
Delete text from a client text inset
(FO_TiApiClient object)
F_ApiDeleteTextInsetContents()
Get a default property list for use with
F_ApiImport()
F_ApiGetImportDefaultParams()
Get text from a text inset
F_ApiGetText()
Update stale text insets
F_ApiUpdateTextInset()
Unicode
To
Use this function
Enable Unicode Mode or Compatibility Mode
F_ApiEnableUnicode()
Undo/Redo
56
To
Use this function
Clear both the undo and redo stacks in the
document specified by docId.
F_ApiUndoCancel()
Mark the starting point of a series of API calls
that are to be treated as a single undoable
operation in the document specified by docId.
F_ApiUndoStartCheckPoint()
FDK Programmer’s Guide
To
Use this function
Mark the ending point of a series of API calls
that are to be treated as a single undoable
operation for the docid specified in the call to
F_ApiUndoStartCheckpoint
F_ApiUndoEndCheckPoint()
FDK Programmer’s Guide
...
Function Summary
57
2
Function Summary
Utility
To
Use this function
Allow the user to cancel a client operation
F_ApiUserCancel()
Call another FDK client
F_ApiCallClient()
Determine if an ID represents a valid object in a
specified document
F_ApiObjectValid()
Exit and free memory
F_ApiBailOut()
Get a default property list for use with
F_ApiImport()
F_ApiGetImportDefaultParams()
Get a default property list for use with
F_ApiOpen()
F_ApiGetOpenDefaultParams()
Get a default property list for use with
F_ApiSave()
F_ApiGetSaveDefaultParams()
Get an object’s type
F_ApiGetObjectType()
Get the index for a property-value pair
(PropValT) in a property list
F_ApiGetPropIndex()
Get the directory containing the current client
F_ApiClientDir()
Get the registered name of the current client
F_ApiClientName()
Reformat a document
F_ApiReformat()
Request notification for specific events from the
Frame product
F_ApiNotification()
Suspend Frame product and client operation for
specified number of seconds
F_ApiSleep()
Set the default directory for the client
F_ApiSetClientDir()
Suspend Frame product and client operation for
specified number of microseconds
F_ApiUSleep()
Workspace
58
To
Use this function
Get the name of the current workspace
F_ApiGetWorkspaceName()
Set the current workspace as specified
F_ApiSetCurrentWorkspace()
FDK Programmer’s Guide
FDK Programmer’s Guide
...
Function Summary
59
3
FDK Function Reference
..................................
.....
3
This chapter lists the FDK functions alphabetically. If you know the name of a function
and want a complete description of it, look it up in this chapter. If you know what you
want to do, but don’t know which function to use, see Chapter 2, “Function Summary.”
Some examples in this chapter use FDE functions, such as F_Alloc() and
F_Sprintf(). For more information on using FDE and FDE functions, see Part III,
“Frame Development Environment (FDE),” in the FDK Programmer’s Guide.
..............................................................................
IMPORTANT: The examples in this chapter assume that your client includes the
fapi.h and fdetypes.h header files in addition to the header files listed in the
function synopsis.
..............................................................................
FDK Programmer’s Reference
60
F_Alloc()
...
FDK Function Reference
F_ A l l o c ( )
F_Alloc() allocates a block of memory.
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
PtrT F_Alloc(UIntT n,
PUCharT flags);
Arguments
n
The number of bytes of memory to allocate
flags
Specifies whether to bail out (DSE) or return NULL (NO_DSE) if the
requested memory isn’t available
Returns
A pointer to the allocated block of memory, or NULL if the requested memory isn’t
available.
Example
The following code allocates memory to a pointer, clears it, and then frees it:
. . .
UCharT *ptr = NULL;
ptr = F_Alloc(65535, NO_DSE);
if(ptr == NULL)
{
F_Printf(NULL, "Couldn't Allocate memory.\n");
return;
}
else
F_ClearPtr(ptr, 65535);
. . .
F_Free(ptr);
. . .
See also
“F_AllocHandle()” on page 62.
FDK Programmer’s Reference
61
3
FDK Function Reference
F_AllocHandle()
F_AllocHandle()
F_AllocHandle() allocates a new handle to a block of memory. Use
F_FreeHandle() to free the memory when you are done with it.
After you have allocated a handle, call F_LockHandle() to get the address of the
handle’s block of memory.
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
HandleT F_AllocHandle(UIntT n,
PUCharT flags);
Arguments
n
The number of bytes of memory to allocate
flags
Specifies whether to bail out (DSE) or return NULL (NO_DSE) if the
requested memory isn’t available
Returns
A handle to the allocated block of memory, or NULL if the requested memory isn’t
available.
62
FDK Programmer’s Reference
F_ApiAddCols()
...
FDK Function Reference
Example
The following code allocates a block of memory to a handle, clears the memory, and
then stores some data to it. After storing data to the memory, it unlocks and frees the
handle.
. . .
HandleT hndl = NULL;
UCharT *ptr;
UIntT i;
hndl = F_AllocHandle(66000, NO_DSE);
if(hndl == NULL)
{
F_Printf(NULL, "Couldn't allocate handle.\n");
return;
}
F_ClearHandle(hndl);
ptr = F_LockHandle(hndl);
/* Stuff the block of memory with a bunch of 9s. */
for(i= 0; i < 66000; i++)
ptr[i] = '9';
F_FreeHandle(hndl);
. . .
See also
“F_Alloc()” on page 61, “F_LockHandle()” on page 585, and “F_UnlockHandle()” on
page 721.
F_ApiAdd Cols()
F_ApiAddCols() adds columns to a table.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiAddCols(F_ObjHandleT docId,
F_ObjHandleT tableId,
IntT refColNum,
IntT direction,
IntT numNewCols);
FDK Programmer’s Reference
63
3
FDK Function Reference
F_ApiAddCols()
Arguments
docId
The ID of the document containing the table.
tableId
The ID of the table.
refColNum
The column at which to start adding columns. The columns are numbered
from left to right starting with column 0.
direction
The direction from the reference column in which to add columns. To add
columns to the left of the reference column, specify FV_Left. To add them
to the right, specify FV_Right.
numNewCols
The number of columns to add.
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiAddCols() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadParameter
The function call specified an invalid parameter
FE_BadObjId
Invalid object ID
FE_BadOperation
The function call specified an illegal operation
Example
The following code adds a column to the right of the first column in the selected table:
. . .
F_ObjHandleT docId, tblId;
/* Get the document and table IDs. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tblId = F_ApiGetId(FV_SessionId, docId, FP_SelectedTbl);
/* Add the column. */
F_ApiAddCols(docId, tblId, 0, FV_Right, 1);
. . .
See also
“F_ApiAddRows()” on page 72.
64
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiAddCommandToMenu()
F_ApiAddCommandToMenu()
F_ApiAddCommandToMenu() adds a FrameMaker product command or a clientdefined command to a menu.
F_ApiAddCommandToMenu() adds the command at the bottom of the specified
menu. To change a command’s position on a menu, set its
FP_PrevMenuItemInMenu and FP_NextMenuItemInMenu properties. For more
information on arranging menus and menu items, see “Arranging menus and menu
items” in the FDK Programmer’s Guide.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiAddCommandToMenu(F_ObjHandleT toMenuId,
F_ObjHandleT commandId);
Arguments
toMenuId
The ID of the menu to which to add the command
commandId
The ID of the command
To add a command that you have created, set commandId to the ID returned by the
F_ApiDefineCommand() or F_ApiDefineCommandEx() call that created the
command.
To add a FrameMaker product command, you must get its ID. To get its ID, call
F_ApiGetNamedObject() with the objectName parameter set to its name. For
example, to get the ID of the Copy command, use the following code:
. . .
F_ObjHandleT copyCmdId;
copyCmdId = F_ApiGetNamedObject(FV_SessionId, FO_Command,
"Copy");
. . .
To add a command to a menu that you have created, set toMenuId to the ID returned
by F_ApiDefineMenu() or F_ApiDefineAndAddMenu() when you created the
menu.
To add a menu item to a FrameMaker product menu, you must get the menu’s ID by
calling F_ApiGetNamedObject() with the objectName parameter set to the
menu’s name.
FDK Programmer’s Reference
65
3
FDK Function Reference
F_ApiAddCommandToMenu()
The [Files] section of the maker.ini file specifies the location of the menu and
command configuration files that list FrameMaker’s menus and commands.
Users can create custom menu files that override the default menus and commands. For
more information, see your FrameMaker product installation documentation.
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiAddCommandToMenu() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this
operation or fmbatch is running
FE_BadOperation
Parameters specify an invalid operation
FE_NotCommand
commandId doesn’t specify a command
FE_NotMenu
toMenuId doesn’t specify a menu
FE_BadParameter
Parameter has an invalid value
FE_SystemError
System error
Example
The following code creates a command named MyCommand and adds it to the File
menu. It also adds the FrameMaker product command UpperCaseText to the File
menu. It then rearranges the commands on the menu so that the two newly added
commands appear first:
66
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiAddLocationToProject()
. . .
#define MY_CMD 1
F_ObjHandleT cmdId, ucCmdId, menuId;
/* Create the command. */
cmdId = F_ApiDefineCommand(MY_CMD, "MyCommand",
"My Command", "\\!MC");
/* Get the ID of the file menu and the UpperCaseText command. */
menuId = F_ApiGetNamedObject(FV_SessionId, FO_Menu, "FileMenu");
ucCmdId = F_ApiGetNamedObject(FV_SessionId,
FO_Command, "UpperCaseText");
/* Add the two commands to the File menu. */
F_ApiAddCommandToMenu(menuId, cmdId);
F_ApiAddCommandToMenu(menuId, ucCmdId);
/* Set command object properties to rearrange menu items. */
F_ApiSetId(FV_SessionId, menuId, FP_FirstMenuItemInMenu, cmdId);
F_ApiSetId(menuId, ucCmdId, FP_PrevMenuItemInMenu, cmdId);
. . .
See also
“F_ApiDefineCommand()” on page 132, “F_ApiDefineAndAddCommand()” on
page 122, and “F_ApiGetNamedObject()” on page 216.
F_ A p i A d d LocationToP roject()
F_ApiLocationToProject() adds a location to the project.
Synopsis
#include “fapi.h”
. . .
VoidT F_ApiAddLocationToProject FARGS(ConStringT
strLocationPath, ConStringT strLocationName);
FDK Programmer’s Reference
67
3
FDK Function Reference
F_ApiAddMenuToMenu()
Arguments
strLocationPath
The location to add to the project.
strLocationName
Name for the location that is being added.
Returns
VoidT
Example
The following code adds a new location to the existing project and also gives it a name.
. . .
ConStringT strLocationPath = "C:\Sample Project";
ConStringT strLocationName = "Sample Project";
. . .
F_ApiAddLocationToProject(strLocationPath, strLocationName);
. . .
See also
“F_ApiNewProject()” on page 335, “F_ApiOpenProject()” on page 369,
“F_ApiSaveProject()” on page 408, “F_ApiDeleteComponentFromProject()” on
page 142, “F_ApiEditComponentOfProject()” on page 157,
“F_ApiExploreComponentOfProject()” on
page 161,“F_ApiRenameComponentOfProject()” on page 396
F_ApiAddMenuToMenu()
F_ApiAddMenuToMenu() adds a FrameMaker product menu or a menu that you have
created to another menu or menu bar.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiAddMenuToMenu(F_ObjHandleT toMenuId,
F_ObjHandleT menuId);
68
FDK Programmer’s Reference
F_ApiAddMenuToMenu()
...
FDK Function Reference
Arguments
toMenuId
The ID of the menu to which the new menu is to be added
menuId
The ID of the new menu
To add a menu to a menu or menu bar that you have created, set
toMenuId to the ID returned by the F_ApiDefineMenu() or
F_ApiDefineAndAddMenu() call that created the menu or menu bar.
To add a menu to one of the FrameMaker product’s menus or menu bars, you must get
the menu or menu bar’s ID. To get its ID, call F_ApiGetNamedObject() with the
objectName parameter set to its name. For example, to get the ID of the Book main
menu bar, use the following code:
. . .
F_ObjHandleT mainMenuId;
mainMenuId = F_ApiGetNamedObject(FV_SessionId, FO_Menu,
"!BookMainMenu");
. . .
The [Files] section of the maker.ini file specifies the location of the menu and command
configuration files that list FrameMaker’s menus and commands.
..............................................................................
IMPORTANT: Your menu appears only on the menu bar you specify. For example, if you
only add a menu to the !MakerMainMenu menu bar, the menu will not appear if the
user switches to quick menus. For your menu to appear after the user has switched to
quick menus, you must also add it to !QuickMakerMainMenu.
..............................................................................
The following table lists the types of menus you can add a menu to and how the
FrameMaker product implements the added menu.
Type of menu or menu
bar you are adding a
menu to
How the FrameMaker product
implements the added menu
Where the FrameMaker
product adds the menu
Menu bar
Pull-down menu
At the right of the menu
bar
Pull-down menu
Pull-right menu
At the bottom of the pulldown menu
FDK Programmer’s Reference
69
3
FDK Function Reference
F_ApiAddMenuToMenu()
Type of menu or menu
bar you are adding a
menu to
How the FrameMaker product
implements the added menu
Where the FrameMaker
product adds the menu
Pop-up menu
Pull-right menu
At the bottom of the popup menu
Pull-right menu
Pull-right menu
At the bottom of the pullright menu
To change a menu’s position on a menu or menu bar after you add it, set its
FP_PrevMenuItemInMenu and FP_NextMenuItemInMenu properties. For more
information on arranging menus and menu items, see “Arranging menus and menu
items” in the FDK Programmer’s Guide.
70
FDK Programmer’s Reference
F_ApiAddMenuToMenu()
...
FDK Function Reference
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiAddMenuToMenu() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this
operation or fmbatch is running
FE_NotMenu
toMenuId and menuId don’t specify menus
FE_BadOperation
Parameters specify an invalid operation
FE_BadParameter
Parameter has an invalid value
FE_SystemError
System error
Example
The following code creates a menu with one command and adds it to the FrameMaker
main menu bar (for both complete and quick menus):
. . .
#define MY_CMD 1
F_ObjHandleT quickMenuBarId, menubarId, menuId, cmdId;
/* Create the menu, then create a command and add it. */
menuId = F_ApiDefineMenu("APIMenu", "API Menu");
cmdId = F_ApiDefineAndAddCommand(MY_CMD, menuId, "MyCmd",
"My Cmd", "");
/* Get ID of FrameMaker main menu (complete menus). */
menubarId = F_ApiGetNamedObject(FV_SessionId, FO_Menu,
"!MakerMainMenu");
/* Get ID of FrameMaker main menu (quick menus). */
quickMenuBarId = F_ApiGetNamedObject(FV_SessionId, FO_Menu,
"!QuickMakerMainMenu");
/* Add the menu to the menu bars. */
F_ApiAddMenuToMenu(menubarId, menuId);
F_ApiAddMenuToMenu(quickMenuBarId, menuId);
. . .
FDK Programmer’s Reference
71
3
FDK Function Reference
F_ApiAddRows()
See also
“F_ApiDefineMenu()” on page 136, “F_ApiDefineAndAddMenu()” on page 129, and
“F_ApiGetNamedObject()” on page 216.
F_ApiAdd Rows()
F_ApiAddRows() adds one or more rows to a table.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiAddRows(F_ObjHandleT docId,
F_ObjHandleT refRowId,
IntT direction,
IntT numNewRows);
Arguments
docId
The ID of the document containing the table.
refRowId
The ID of the row at which to starting adding rows.
direction
The direction from the reference row in which to add rows. For a list of the
constants you can specify, see the table below.
numNewRows
The number of rows to add.
The following table lists the constants you can specify for direction.
Direction constant
72
Meaning
FV_Above
Add rows above the row specified by refRowId. The added rows
are the same type as the row specified by refRowId.
FV_Below
Add rows below the row specified by refRowId. The added rows
are the same type as the row specified by refRowId.
FV_Body
Add body rows at the bottom of the existing body rows (refRowId
is used to determine which table to add rows to).
FV_Footing
Add footing rows at the bottom of the existing footing rows
(refRowId is ignored).
FV_Heading
Add heading rows at the bottom of the existing heading rows
(refRowId is ignored).
FDK Programmer’s Reference
F_ApiAddRows()
...
FDK Function Reference
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiAddRows() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this operation
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid row ID
FE_BadOperation
Parameters specify an invalid operation
FE_BadParameter
Parameter has an invalid value
Example
The following code adds two rows after the first row of the selected table:
. . .
F_ObjHandleT docId, tblId, row1Id;
/* Get the document and table IDs. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tblId = F_ApiGetId(FV_SessionId, docId, FP_SelectedTbl);
/* Get the ID for row 1. */
row1Id = F_ApiGetId(docId, tblId, FP_FirstRowInTbl);
/* Add the rows. */
F_ApiAddRows(docId, row1Id, FV_Below, 2);
. . .
See also
“F_ApiAddCols()” on page 63.
FDK Programmer’s Reference
73
3
FDK Function Reference
F_ApiAddText()
F_ApiAddTe xt()
F_ApiAddText() inserts text into a paragraph or a text line.
Synopsis
#include "fapi.h"
. . .
F_TextLocT F_ApiAddText(F_ObjHandleT docId,
F_TextLocT *textLocp,
StringT text);
Arguments
docId
The ID of the document
textLocp
The text location at which to add the text
text
The text to add
The text you specify for text must use the FrameMaker product character set. To add
special characters, you must specify octal (\) or hexadecimal (\x) sequences. The
following table lists some of these sequences.
74
Special character
Hexadecimal
representation
Octal
representation
>
\x3e
\76
" (straight double quotation mark)
\x22
\42
“ (left double quotation mark)
\xd2
\322
” (right double quotation mark)
\xd3
\323
FDK Programmer’s Reference
F_ApiAddText()
...
FDK Function Reference
For a complete list of the characters in the FrameMaker product character set and the
corresponding hexadecimal codes, see your Frame product user’s manual. If you are not
using ANSI C, you must specify octal (\) sequences instead of hexadecimal codes. If
you are using ANSI C, you can specify either octal or hexadecimal sequences.
Returns
The text location of the end of the text that was added. If it fails, the returned text
location is invalid.
If F_ApiAddText() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID.
FE_BadObjId
Invalid object ID.
FE_NotTextObject
The object that textLocp specifies is not a
paragraph (FO_Pgf) or a text line
(FO_TextLine).
FE_OffsetNotFound
The offset specified for the text location couldn’t be
found in the specified text object.
FE_ReadOnly
The specified document is read-only.
FE_BadSelectionForOperation
The location that textLocp specifies is invalid.
For example, it is inside a variable or outside the
highest level element in a structured document.
FDK Programmer’s Reference
75
3
FDK Function Reference
F_ApiAddPreferencePanel()
Example
To add the following text at the insertion point (or the end of the current text selection),
The new CoffeeTool
is now on sale.
use the following code:
. . .
F_TextLocT trm;
F_TextRangeT tr;
F_ObjHandleT docId;
/* Get current text selection. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId,docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
/* Add text. Use octal 011 for Return (end of paragraph). */
trm = F_ApiAddText(docId, &tr.end, "The new CoffeeTool\011");
/* Add more text to the end of the text that was just added. */
F_ApiAddText(docId, &trm, "is now on sale.");
. . .
See also
“F_ApiGetText()” on page 251 and “F_ApiDeleteText()” on page 147.
F_ApiAddPreferencePanel()
F_ApiAddPreferencePanel() adds a panel to the FrameMaker Preferences
dialog.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiAddPreferencePanel (IntT dlgNum, F_ObjHandleT
dlgId,ConStringT title, ConStringT parentIdent, ConStringT
parentName)
76
FDK Programmer’s Reference
F_ApiAlert()
...
FDK Function Reference
Arguments
dlgNum
A unique number to identify the dialog box. The API passes this number to your
client’s F_ApiDialogEvent() callback when there is a user action in the dialog
box. If you don’t want the API to call your client’s F_ApiDialogEvent() callback
when there is a user action, set dlgNum to 0.
F_ObjHan
dleT
The ID of the panel to add.
title
The title of the panel to add.
parentId
ent
ID of the Preferences dialog box.
parentNa
me
Name of the Preferences dialog box.
Returns
The ID of the opened resource, or 0 if it can’t open the resource.
If F_ApiAddPreferencePanel() fails, the API assigns one of the following values
to FA_errno.
FA_errno value
Meaning
FE_BadOperation
Function call specified an illegal operation
F_ApiAlert ()
F_ApiAlert() displays an alert box with a message. Depending on the constant you
specify for type, it displays either OK and Cancel buttons, Yes and No buttons, or a
Continue button.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiAlert(StringT message, IntT type);
Arguments
message
The message that appears in the dialog box. If the message is longer than 255
characters, it is truncated.
type
The dialog box type. See below for dialog types.
FDK Programmer’s Reference
77
3
FDK Function Reference
F_ApiAlert()
Specify one of the following constants for the type argument:
type constant
Type of dialog box displayed
FF_ALERT_OK_DEFAULT
Displays OK and Cancel buttons; OK is the default
FF_ALERT_CANCEL_DEFAULT
Displays OK and Cancel buttons; Cancel is the default
FF_ALERT_CONTINUE_NOTE
Displays Ok button
FF_ALERT_CONTINUE_WARN
Displays Ok button with a warning indication
FF_ALERT_YES_DEFAULT
Displays Yes and No buttons; Yes is the default
FF_ALERT_NO_DEFAULT
Displays Yes and No buttons; No is the default
Returns
0 if the user clicked OK, Continue, or Yes; -1 if the user clicked
Cancel or No.
Example
Use the code shown in Figure 3-1 and Figure 3-2 to produce the following alert boxes.
F_ApiAlert("This alert is an OK_DEFAULT.", FF_ALERT_OK_DEFAULT);
78
FDK Programmer’s Reference
F_ApiAlert()
...
FDK Function Reference
F_ApiAlert("This alert is a CANCEL_DEFAULT.", FF_ALERT_CANCEL_DEFAULT);
F_ApiAlert("This alert is a CONTINUE_NOTE.", FF_ALERT_CONTINUE_NOTE);
F_ApiAlert("This alert is a CONTINUE_WARN.", FF_ALERT_CONTINUE_WARN);
Figure 3-1 Sample code for alert boxes
F_ApiAlert("This alert is a YES_DEFAULT.", FF_ALERT_YES_DEFAULT);
FDK Programmer’s Reference
79
3
FDK Function Reference
F_ApiAlive()
F_ApiAlert("This alert is a NO_DEFAULT.", FF_ALERT_NO_DEFAULT);
Figure 3-2 Sample code for alert boxes
F_ A p i A l i v e ( )
Checks whether the current asynchronous client has a connection with a FrameMaker
process. Use it after registering the asynchronous client via
F_ApiWinConnectSession().
Synopsis
#include "f_stdio.h"
. . .
IntT F_ApiAlive (VoidT);
Returns
If there is a current connection to a FrameMaker process, this function returns a positive
integer. Otherwise it returns 0.
See also
F_ApiWinConnectSession()
F_ApiAllocatePropVals()
F_ApiAllocatePropVals() allocates memory for a property list.
Synopsis
#include "fapi.h"
. . .
F_PropValsT F_ApiAllocatePropVals(IntT numProps);
80
FDK Programmer’s Reference
F_ApiAllocateTextItems()
...
FDK Function Reference
Arguments
numProps
The number of properties in the property list
Returns
A property list (an F_PropValsT data structure).
The returned F_PropValsT structure references memory that is allocated by the API.
Use F_ApiDeallocatePropVals() to free this memory when you are done with it.
If F_ApiAllocatePropVals() fails, the API sets the len field of the returned
structure to 0.
Example
The following code allocates memory for an Open script (property list):
. . .
F_PropValsT openParams;
openParams = F_ApiAllocatePropVals(FS_NumOpenParams);
if(openParams.len == 0) return;
/* Use property list here. */
/* We’re done with the property list, so we deallocate it. */
F_ApiDeallocatePropVals(&openParams);
. . .
See also
“F_ApiDeallocateStructureType()” on page 121.
F _ A p i A l l o c a t eTe x t It e ms ()
F_ApiAllocateTextItems() allocates memory for an F_TextItemsT structure
and the array of text items that it references.
Synopsis
#include "fapi.h"
. . .
F_TextItemsT F_ApiAllocateTextItems(IntT numTextItems);
FDK Programmer’s Reference
81
3
FDK Function Reference
F_ApiApplyAttributeExpression()
Arguments
numTextItems
The number of text items to allocate
Returns
An F_TextItemsT structure.
The returned F_TextItemsT structure references memory that is allocated by the
API. Use F_ApiDeallocateTextItems() to free this memory when you are done
with it.
If F_ApiAllocateTextItems() fails, the API sets the len field of the returned
structure to 0.
Example
The following code allocates ten text items:
. . .
F_TextItemsT tis;
tis = F_ApiAllocateTextItems(10);
. . .
See also
“F_ApiGetText()” on page 251.
F_ApiApplyAttributeExpre ssion()
Applies an attribute expression to a document to perform attribute-based-filtering.
Synopsis
#include "fapi.h"
...
IntT F_ApiApplyAttributeExpression(F_ObjHandleT docId,
F_ObjHandleT attrExprId);
Arguments
82
docId
The ID of the document to which the attribute
expression is to be applied.
attrExprId
The ID of the attribute expression to be applied to
the document.
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiApplyAttributeExpressionAsCondition()
Returns
FE_Success if it succeeds, or an error code if an error occurs. If
F_ApiApplyAttributeExpression() fails, the API assigns one of the following
values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID.
FE_BadObjId
Invalid expression ID.
FE_InvalidAttrExpr
The attribute expression being invalid cannot
be applied to the document
FE_WrongProduct
The current FrameMaker product doesn't
support the operation.
FE_SystemError
Couldn't allocate memory
Example
The following code applies the expression named 'WebOutput' to the document.
. . .
F_ObjHandleT attrExprId = F_ApiGetNamedObject(docId,
FO_AttrCondExpr,"WebOutput");
F_ApiApplyAttributeExpression(docId, attrExprId);
...
F_ApiApplyAttributeExpre ssionAsCondition()
Applies an attribute-based expression to the document where the filtered text is
converted to conditional text.
Synopsis
#include "fapi.h"
...
StatusT F_ApiApplyAttributeExpressionAsCondition(
F_ObjHandleT docId,
F_ObjHandleT attrExpId,
F_ObjHandleT condId,
BoolT removePreviouslyApplied);
FDK Programmer’s Reference
83
3
FDK Function Reference
F_ApiApplyConditionalSettings()
Arguments
docId
The ID of the document on which attrExpId is to be
applied
attrExpId
The ID of the attribute expression to be applied on the
document
condId
The ID of the conditional text format that will be
applied on the filtered text
removePreviouslyApplied
If true, then remove the conditional text settings at all
locations in the document, whereever condId is
applied.
Returns
If succeeds: FE_Success
If an error occurs: An error code
If API fails, the API assigns one of the following values to FA_errno:
FA_errno value
Meaning
FE_Success
Operation is successful
FE_BadDocId
Invalid document ID
FE_InvalidAttrExpr
The expression string set in the attrExpId's object is
invalid
FE_WrongProduct
Current product interface isn’t Structured FrameMaker
FE_BadObjId
Invalid object ID
F_ApiApplyConditionalSettings()
F_ApiApplyConditionalSettings() applies conditional settings in the selected
book based on the specified settings..
Synopsis
#include "fapi.h"
. . .
Void F_ApiApplyConditionalSettings (F_ObjHandleT bookId,
F_PropValsT *settingsp);
84
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiApplyConditionalSettings()
Arguments
bookId
The specific book
settingsp
The value of the property to set.
The following are the list of settings can be applied:
Property
Meaning
ShowState
Specify the show state of the conditional text
applied to the book.
FV_ShowAll
FV_ShowAsPerConditions
.FV_ShowAsPerExpression
FS_ShowConditions
A string array of the names of the condition tags to
be added to the Show list in the Show/Hide
Conditional Text dialog
FS_HideConditions
A string array of the names of the
condition tags to be added to the
Hide list in the Show/Hide
Conditional Text dialog
FS_ActiveConditionalExpress
ion
The conditional build expression tag to be applied.
When reading this property: Returns the
currently applied Conditional Build Expression tag,
if (FS_ShowState = FV_ShowAsPerExpression).
Else NULL is returned.
When applying this property: Applies the current
active Conditional Build expression if
(FS_ShowState = FV_ShowAsPerExpression).
Otherwise ignored.
FS_ShowConditionIndicators
Show / hide the conditional indicators.
FS_ApplyConditionalSettings
ToViewOnlyDoc
Apply the conditions to view-only documents in the
book.
FS_ApplyConditionalSettings
ToNestedBooks
Apply the conditions to nested books within the
current book.
FS_ApplyConditionalSettings
ShowBookErrorLog
Show erros in the book error log.
FDK Programmer’s Reference
85
3
FDK Function Reference
F_ApiApplyPageLayout()
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiApplyPageLayout() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_ExpressionNotFound
Expression Tag to be applied does not exist in the
default document of the book.
FE_FailedToApplyOnOneOrMore
Components
Failed to apply conditional settings on one or more
book components.
F_ApiApplyPageLayout()
F_ApiApplyPageLayout() applies a page’s layout to another page.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiApplyPageLayout(F_ObjHandleT docId,
F_ObjHandleT destPage,
F_ObjHandleT srcPage);
Arguments
docId
The document containing the pages
destPage
The page with the layout to apply
srcPage
The page to which to apply the layout
Returns
FE_Success if it succeeds, or an error code if an error occurs.
86
FDK Programmer’s Reference
F_ApiApplyPageLayout()
...
FDK Function Reference
If F_ApiApplyPageLayout() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this
operation or fmbatch is running
FE_BadOperation
Parameters specify an invalid operation
FE_BadParameter
Parameter has an invalid value
FE_SystemError
System error
Example
The following code applies the layout of the Right master page to the
current page:
. . .
F_ObjHandleT docId, curPageId, rtPageId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
curPageId = F_ApiGetId(FV_SessionId, docId, FP_CurrentPage);
rtPageId = F_ApiGetId(FV_SessionId, docId, FP_RightMasterPage);
F_ApiApplyPageLayout(docId, curPageId, rtPageId);
. . .
See also
“F_ApiSimpleImportFormats()” on page 469.
FDK Programmer’s Reference
87
3
FDK Function Reference
F_ApiBailOut()
F_ApiBailOut()
F_ApiBailOut() allows your client to bail out. When your client calls
F_ApiBailOut(), the FrameMaker product waits until it returns control from the
current callback, and then exits it, saving system resources.
After your client has bailed out, the FrameMaker product still processes events that
affect it. Menus your client created are still valid. If your client has requested
notification for particular events, the FrameMaker product continues to monitor those
events. It also monitors apiclient hypertext commands that specify your client’s
name. If these events occur, the FrameMaker product restarts your client by calling its
F_ApiInitialize() function with initialization set to
FA_Init_Subsequent.
..............................................................................
IMPORTANT: If your client bails out, it loses all its global variable settings.
..............................................................................
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiBailOut();
Arguments
None.
Returns
VoidT.
If F_ApiBailOut() fails, the API assigns the following value to FA_errno.
88
FA_errno value
Meaning
FE_Transport
A transport error occurred
FDK Programmer’s Reference
F_ApiCallClient()
...
FDK Function Reference
Example
The following code bails out if the FrameMaker product currently running is not
FrameMaker:
. . .
StringT product;
product = F_ApiGetString(0, FV_SessionId, FP_ProductName);
if (!F_StrEqual(product, "FrameMaker"))
{
F_ApiAlert ("FDK client requires FrameMaker to run.",
FF_ALERT_CONTINUE_WARN);
F_ApiBailOut();
/* Bail out is not effective until return. */
return;
}
. . .
F_ApiCallC lient()
F_ApiCallClient() allows a client to call another client. It is useful for calling
Structured FrameMaker clients, such as the structure generator and the element catalog
manager.
F_ApiCallClient() calls the F_ApiNotify() function of the target client, with
notification set to FA_Note_ClientCall, docId set to 0, and sparm set
to the string specified by arg. To receive the notification sent by
F_ApiCallClient(), the target client must be registered and must have requested
the FA_Note_ClientCall notification, as shown in the
following code:
. . .
F_ApiNotification(FA_Note_ClientCall, True);
. . .
FDK Programmer’s Reference
89
3
FDK Function Reference
F_ApiCenterOnText()
Synopsis
#include "fapi.h"
. . .
IntT F_ApiCallClient(StringT clname,
StringT arg);
Arguments
clname
The registered name of the target client. For the names of FrameMakwe
clients, see the table below.
arg
A string that is passed to the target client.
Returns
FE_Success if it succeeds, or the value specified by the target client’s last call to
F_ApiReturnValue(). Note that calls to the structure generator always return
FE_Success no matter what string is passed to it as an argument.
If F_ApiCallClient() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_NameNotFound
There is no client with the specified name in the current
FrameMaker product session
FE_BadParameter
For the TableSort client only:
One of the arguments is invalid. For example, you gave a value for
the sort key that is greater than the number of columns or rows in
the current table selection, or you have no table cells selected.
F_ApiCenterOnText()
F_ApiCenterOnText() centers a range of text so the middle of the text appears in
the middle of the document window.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiCenterOnText(F_ObjHandleT docId,
F_TextRangeT *textRangep);
90
FDK Programmer’s Reference
F_ApiCenterOnText()
...
FDK Function Reference
Arguments
docId
The ID of the document containing the text range
textRangep
The range of text to center
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiCenterOnText() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadRange
The specified text range is invalid
FE_NotTextObject
One of the objects specified for textRangep isn’t a paragraph
(FO_Pgf) or a text line (FO_TextLine)
FE_OffsetNotFound
The offset specified for the text location couldn’t be found in the
specified paragraph or text line
Example
The following code centers the text selection or insertion point:
. . .
F_ObjHandleT docId;
F_TextRangeT tr;
/* Get current text selection */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
F_ApiCenterOnText(docId, &tr);
. . .
See also
“F_ApiScrollToText()” on page 411.
FDK Programmer’s Reference
91
3
FDK Function Reference
F_ApiCheckStatus()
F_ApiCheckStatus()
F_ApiCheckStatus() checks the scripts returned by F_ApiOpen(),
F_ApiImport(), F_ApiSave(), and F_ApiUpdateBook() to determine if a
specified status bit is set.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiCheckStatus(F_PropValsT *p,
IntT statusBit);
Arguments
p
The property list returned by F_ApiOpen(), F_ApiSave(),
F_ApiImport(), or F_ApiUpdateBook()
statusBit
The status bit to test
Returns
True if the bit is set; otherwise, False.
Example
The following code determines whether fonts were mapped after a document is opened
successfully:
. . .
F_PropValsT returnParams;
returnParams = F_ApiAllocatePropVals(FS_NumOpenReturnParams);
. . .
/* Call to F_ApiOpen() goes here. */
if (F_ApiCheckStatus(&returnParams, FV_FontsWereMapped))
F_ApiAlert("Unavailable fonts were mapped.",
FF_ALERT_CONTINUE_NOTE);
. . .
See also
“F_ApiAddRows()” on page 72, “F_ApiOpen()” on page 361, “F_ApiSave()” on
page 405, and “F_ApiUpdateBook()” on page 488.
92
FDK Programmer’s Reference
F_ApiChooseFile()
...
FDK Function Reference
F_ApiChooseFile()
F_ApiChooseFile() displays dialog boxes similar to a Frame product’s Open and
Save dialog boxes. It displays directories and files in a scroll list and allows the user to
choose a file or directory.
Depending on the platform you are running your client on and the constant you specify
for mode, the dialog box can provide Select, Open, Save, Use, or Cancel buttons. If the
user clicks Select, Open, Save, or Use, F_ApiChooseFile() stores the selected file
or directory’s pathname to *choice. If the user clicks Cancel,
F_ApiChooseFile() does not assign a value to *choice.
..............................................................................
IMPORTANT: F_ApiChooseFile() allocates memory for the string referenced by
*choice. Use F_Free() to free the string when you are done with it.
..............................................................................
Synopsis
#include "fapi.h"
. . .
IntT F_ApiChooseFile(StringT *choice,
StringT title,
StringT directory,
StringT stuffVal,
IntT mode,
StringT helpLink);
FDK Programmer’s Reference
93
3
FDK Function Reference
F_ApiChooseFile()
Arguments
choice
The selected pathname when the user clicks OK.
title
The message that appears in the dialog box.
directory
The default directory when the dialog box is first displayed. If you specify an
empty string, the last directory used by an FDK client is used. If no FDK
client has used a directory, the directory specified by the session property,
FP_OpenDir, is used.
stuffVal
The default value that appears in the input field when the dialog box first
appears. If the dialog box type specified by mode doesn’t have an input
field, this string is ignored.
mode
A constant specifying the type of dialog box. See the table below for possible
values.
helpLink
Obsolete for versions 6.0 and later; pass an empty string.
The name of a document containing help information for the dialog box or an
empty string ("") if there is no help document.
You can specify the following values for mode.
mode constant
Dialog box type
FV_ChooseSelect
Dialog box that allows the user to choose a file by
clicking Select. It provides an input field that the user
can type a filename in.
FV_ChooseOpen
Dialog box that allows the user to choose a file by
clicking Open. It provides an input field that the user
can type a filename in.
FV_ChooseSave
Dialog box that allows the user to select a file. It
provides Save and Cancel buttons and an input field.
FV_ChooseOpenDir
Dialog box that allows the user to choose a directory.
Returns
0 if the user clicked Open, Select, Use, or Save; a nonzero value if the user clicked
Cancel or an error occurred.
If F_ApiChooseFile() fails, the API assigns the following value to FA_errno.
94
FA_errno value
Meaning
FE_Transport
A transport error occurred
FDK Programmer’s Reference
F_ApiChooseFile()
...
FDK Function Reference
Example
The following code displays the dialog boxes shown in Figure 3-3, Figure 3-4, and
Figure 3-5
. . .
IntT err;
StringT sres;
err = F_ApiChooseFile(&sres, "Choose a file to open.",
"", "", FV_ChooseOpen, "");
if (!err) F_ApiDeallocateString(&sres);
err = F_ApiChooseFile(&sres, "Select a file.",
"", "", FV_ChooseSelect, "");
if (!err) F_ApiDeallocateString(&sres);
err = F_ApiChooseFile(&sres, "Choose a file to save.", "",
"myfile.doc", FV_ChooseSave, "");
if (!err) F_ApiDeallocateString(&sres);
. . .
Figure 3-3 FV_ChooseFile dialog box
FDK Programmer’s Reference
95
3
FDK Function Reference
F_ApiClear()
Figure 3-4 FV_ChooseSelect dialog box
Figure 3-5 FV_ChooseSave dialog box
See also
“F_ApiScrollBox()” on page 409.
F _ A p i C l e a r( )
F_ApiClear() deletes the current selection from a document.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiClear(F_ObjHandleT docId
IntT flags);
96
FDK Programmer’s Reference
F_ApiClear()
...
FDK Function Reference
Arguments
docId
The ID of the document from which to clear the selection.
flags
Bit field that specifies how to clear the text and how to handle interactive alerts. For
default settings, specify 0.
If you specify 0 for flags, F_ApiClear() suppresses any interactive alerts or
warnings that arise, leaves the selected table cells empty, and deletes hidden text. You
can also OR the following values into flags.
flags constant
Meaning
FF_INTERACTIVE
Prompt user with dialog or alert boxes that arise
FF_CUT_TBL_CELLS
Remove cleared table cells
FF_VISIBLE_ONLY
Clear only the visible portion of the selection
FF_DONT_DELETE_HIDDEN_TEXT
Don’t delete hidden text
The FF_INTERACTIVE flag takes precedence over other flags. So, if you specify
FF_INTERACTIVE | FF_DONT_DELETE_HIDDEN_TEXT and the selection contains
hidden text, the Frame product allows the user to choose whether to delete the hidden
text.
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiClear() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadSelectionForOperation
Current selection is invalid for this operation
FE_Canceled
User or parameters canceled the operation
FE_WrongProduct
Current Frame product doesn’t support requested
operation
FDK Programmer’s Reference
97
3
FDK Function Reference
F_ApiClearAllChangebars()
Example
The following code extends the text selection to the end of the paragraph, and then
deletes it:
. . .
F_TextRangeT tr;
F_ObjHandleT docId, pgfId, nextpgfId;
/* Get current text selection. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
/* Get ID of next paragraph and extend selection to it. */
nextpgfId = F_ApiGetId(docId, tr.end.objId, FP_NextPgfInFlow);
if (nextpgfId)
{
tr.end.objId = nextpgfId;
tr.end.offset = 0;
F_ApiSetTextRange(FV_SessionId, docId, FP_TextSelection,&tr);
}
F_ApiClear(docId, 0);
. . .
See also
“F_ApiCopy()” on page 111, “F_ApiCut()” on page 119, and “F_ApiPaste()” on
page 370.
F_ A p i C l e a rAllC han gebars()
F_ApiClearAllChangebars() clears change bars from a specified document. It
executes the same command as clicking the Clear All Change Bars box in the Change
Bars dialog box.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiClearAllChangebars(F_ObjHandleT docId);
98
FDK Programmer’s Reference
F_ApiClientDir()
...
FDK Function Reference
Arguments
docId
The ID of the document for which to clear the change bars
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiClearAllChangebars() fails, the API assigns one of the following values
to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Bad document ID
FE_WrongProduct
Current Frame product doesn’t support this operation
FE_SystemError
System error
Example
The following code removes the change bars from the current document:
. . .
F_ObjHandleT docId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
F_ApiClearAllChangebars(docId);
. . .
F _ A p i C l i e n t D i r( )
F_ApiClientDir() returns the name of the current FDK client’s directory, which is
the directory that contains the client’s DLL.
Synopsis
#include "fapi.h"
. . .
StringT F_ApiClientDir(VoidT);
Arguments
None.
FDK Programmer’s Reference
99
3
FDK Function Reference
F_ApiClientName()
Returns
The name of the current FDK client’s directory if it succeeds, or NULL if an error
occurs. If you get a NULL string, you should check FA_errno; if it is set to
FE_Success, then there is no <Directory> statement in the apiclients file. To
provide a client directory, use F_ApiSetClientDir(). For more information, see
“F_ApiSetClientDir()” on page 418.
If F_ApiClientDir() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
..............................................................................
IMPORTANT: Use F_Free() to free the string returned by F_ApiClientDir()
when you are done with it.
..............................................................................
Example
The following code displays the name of the directory containing the current FDK client
in an alert box:
. . .
#include "fmemory.h"
StringT clientDir;
clientDir = F_ApiClientDir();
F_ApiAlert(clientDir, FF_ALERT_CONTINUE_NOTE);
F_Free(clientDir);
. . .
See also
“F_ApiSetClientDir()” on page 418 and “F_ApiClientName()” on page 100.
F_ApiClientName( )
F_ApiClientName() returns the registered name of the current client (the client that
calls F_ApiClientName()). For more information on registering FDK clients, see
the FDK Platform Guide for your platform.
100
FDK Programmer’s Reference
F_ApiClientName()
...
FDK Function Reference
Synopsis
#include "fapi.h"
. . .
StringT F_ApiClientName(VoidT);
Arguments
None.
Returns
The registered name of the current client if it succeeds, or NULL if an error occurs.
If F_ApiClientName() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
..............................................................................
IMPORTANT: Use F_Free() to free the string returned by F_ApiClientName()
when you are done with it.
..............................................................................
Example
The following code displays the registered name of the current FDK client in an alert
box:
. . .
#include "fmemory.h"
StringT clientName;
clientName = F_ApiClientName();
F_ApiAlert(clientName, FF_ALERT_CONTINUE_NOTE);
F_Free(clientName);
. . .
See also
“F_ApiClientDir()” on page 99.
FDK Programmer’s Reference 101
3
FDK Function Reference
F_ApiClientPath()
F _ A p i C l i e n t P a th ()
F_ApiClientPath() returns the name of the current FDK client’s path, which is the
path that contains the client’s DLL.
Synopsis
#include "fapi.h"
. . .
StringT F_ApiClientPath(ConStringT clientName);
Arguments
None.
Returns
The name of the current FDK client’s path if it succeeds, or NULL if an error occurs..
If F_ApiClientPath() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
..............................................................................
IMPORTANT: Use F_Free() to free the string returned by F_ApiClientPath()
when you are done with it.
..............................................................................
Example
The following code displays the name of the path containing the current FDK client in
an alert box:
. . .
#include "fmemory.h"
StringT clientPath;
clientDir = F_ApiClientPath();
F_ApiAlert(clientDir, FF_ALERT_CONTINUE_NOTE);
F_Free(clientPath);
. . .
See also
“F_ApiClientDir()” on page 99 and “F_ApiClientName()” on page 100.
102
FDK Programmer’s Reference
F_ApiClose()
...
FDK Function Reference
F _ A p i C l o s e( )
F_ApiClose() closes a document, book, dialog box, or Frame session.
If there are unsaved changes in a file and you set FF_CLOSE_MODIFIED for the
flags argument, F_ApiClose() abandons the changes and closes the file anyway.
If you set flags to 0, F_ApiClose() aborts the Close operation and returns
FE_DocModified.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiClose(F_ObjHandleT Id,
IntT flags);
Arguments
Id
The ID of the document, book, dialog box, or session to close.
flags
Specifies whether to abort or to close open documents or books if they have unsaved
changes. Set the FF_CLOSE_MODIFIED flag to close open documents and books
regardless of their state.
To quit a Frame session, set Id to FV_SessionId.
..............................................................................
IMPORTANT: If you are closing an individual document or a dialog box, make sure Id
specifies an object ID and not 0. If Id is set to 0, F_ApiClose() quits the Frame
session, because the value of the FV_SessionId constant is 0. If you call
F_ApiClose() in the F_ApiDialogEvent() callback, call it only to close custom
modeless dialog boxes. Calling it for any other reason, such as ending the Frame
product session or closing a modal dialog box, will cause unexpected results.
..............................................................................
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiClose() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_DocModified
The document was modified and flags was set to 0
FDK Programmer’s Reference 103
3
FDK Function Reference
F_ApiClose()
Example
The following code closes the active document:
. . .
F_ObjHandleT docId;
IntT resp;
/* Get ID of active document. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
/* See whether document has been modified. */
if (F_ApiGetInt(FV_SessionId, docId, FP_DocIsModified))
resp = F_ApiAlert("Document changed. Close it anyway?",
FF_ALERT_OK_DEFAULT);
if (!resp) F_ApiClose (docId, FF_CLOSE_MODIFIED);
. . .
See also
“F_ApiSave()” on page 405.
104
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiCombinedFamilyFonts()
F_ApiCombinedFamilyFonts()
F_ApiCombinedFamilyFonts() returns the permutations of angles, variations, and
weights available for a specified combined font definition.
..............................................................................
IMPORTANT: To return the permutations of a combined font family, you must use
F_ApiFamilyFonts(). For more information, see “F_ApiFamilyFonts()” on
page 163.
..............................................................................
Synopsis
#include "fapi.h"
. . .
F_CombinedFontsT F_ApiCombinedFamilyFonts
(F_ObjHandleT combinedFont);
Arguments
combinedFont
The object ID of a combined font definition
To get a list of combined font definitions, use FP_FirstCombinedFontDefnInDoc to
get the first combined font definition in the document. From that you can build a list of
combined font definitions using FP_NextCombinedFontDefnInDoc.
Returns
An F_CombinedFontsT structure provides a list of the permutations of angles,
variations, and weights available for the specified combined font definition.
F_CombinedFontsT is defined as:
typedef struct {
UIntT len;
F_CombinedFontT *val;
} F_CombinedFontsT;
F_CombinedFontT is defined as:
typedef struct {
F_ObjHandelT combinedFont; /* Combined font ID */
UIntT variation; /* Index of the font variation. */
UIntT weight; /* Index of the font weight. */
UIntT angle; /* Index of the font angle. */
} F_CombinedFontT;
FDK Programmer’s Reference 105
3
FDK Function Reference
F_ApiCombinedFamilyFonts()
Example
The following code loops through the combined fonts in a document and prints the
combined font name, the base and Western font family names, and the permutations for
the combined font:
. . .
#include "fapi.h"
#include "futils.h"
#include "fstrings.h"
. . .
UIntT i, base, west;
F_StringsT families, weights, variations, angles;
StringT cFontName;
F_CombinedFontsT perms;
F_ObjHandleT docId, cFontId;
. . .
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
/*Get lists of families, vars, weights, and angles for session*/
families = F_ApiGetStrings(0, FV_SessionId, FP_FontFamilyNames);
weights = F_ApiGetStrings(0, FV_SessionId, FP_FontWeightNames);
variations = F_ApiGetStrings(0, FV_SessionId,
FP_FontVariationNames);
angles = F_ApiGetStrings(0, FV_SessionId, FP_FontAngleNames);
/* Loop through combined font definitions for the doc */
cFontId = F_ApiGetId(FV_SessionId, docId,
FP_FirstCombinedFontDefnInDoc);
while (cFontId) {
/* Print combined font name, and base and Western family names
*/
cFontName = F_ApiGetString(docId, cFontId, FP_Name);
base = F_ApiGetInt(docId, cFontId, FP_BaseFamily);
west = F_ApiGetInt(docId, cFontId, FP_WesternFamily);
F_Printf(NULL, (StringT)
"\n%s is composed of the %s and %s font families.\n",
cFontName, families.val[base], families.val[west]);
106
FDK Programmer’s Reference
F_ApiCommand()
...
FDK Function Reference
/* Print the permutations of the combined font */
perms = F_ApiCombinedFamilyFonts(cFontId);
for (i = 0; i < perms.len; i++) {
F_Printf(NULL, (StringT)
"Variation: %s, Weight: %s, Angle: %s\n",
variations.val[perms.val[i].variation],
weights.val[perms.val[i].weight],
angles.val[perms.val[i].angle]);
}
/* Free the array of F_CombinedFontT structures and */
/* get the next combined font definition in the document. */
F_Free(perms.val);
cFontId = F_ApiGetId(docId, cFontId,
FP_NextCombinedFontDefnInDoc);
}
. . .
/* Free the string list structures. */
F_ApiDeallocateStrings(&families);
F_ApiDeallocateStrings(&weights);
F_ApiDeallocateStrings(&variations);
F_ApiDeallocateStrings(&angles);
F_ApiCommand()
F_ApiCommand() is a callback that you must define to respond to the user choosing
a menu item added by your client.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiCommand(command)
IntT command;
{
/* Code to respond to menu item choices goes here. */
}
FDK Programmer’s Reference 107
3
FDK Function Reference
F_ApiCompare()
Arguments
command
The cmd parameter from the
F_ApiDefineCommand(),F_ApiDefineCommandEx()or
F_ApiDefineAndAddCommand() call that created the menu item that the user
chose
Returns
VoidT.
Example
See “Responding to the user choosing a command” in the FDK Programmer’s Guide.
F_ApiCompare ()
F_ApiCompare() compares two documents or two books.
Synopsis
#include "fapi.h"
. . .
F_CompareRetT F_ApiCompare(F_ObjHandleT olderId,
F_ObjHandleT newerId,
IntT flags,
StringT insertCondTag,
StringT deleteCondTag,
StringT replaceText,
IntT compareThreshold);
108
FDK Programmer’s Reference
F_ApiCompare()
...
FDK Function Reference
Arguments
olderId
The ID of the older version of the document or book.
newerId
The ID of the newer version of the document or book.
flags
Bit flags that specify how to generate the summary and composite
documents. Specify 0 for the default flags.
insertCondTag
The condition tag to apply to insertions shown in the composite
document. For no insert condition tag,
specify NULL.
deleteCondTag
The condition tag to apply to deletions shown in the composite
document. For no delete condition tag,
specify NULL.
replaceText
Text to appear in place of the deleted text. For no replacement text,
specify NULL.
compareThreshold
Percentage of words that can change before paragraphs are
considered not equal. If two paragraphs are equal, word differences
between them are shown within a paragraph in the composite
document. If a paragraph is not equal to another, it is marked
inserted or deleted. To specify an 85% threshold, set
compareThreshold to 85. The default value is 75.
You can OR the values shown in the following table into the flags argument.
flags constant
Meaning
FF_CMP_SUMMARY_ONLY
Generate a summary document, but not a composite document
FF_CMP_CHANGE_BARS
Turn on change bars in the composite document
FF_CMP_HYPERLINKS
Put hypertext links in the summary document
FF_CMP_SUMKIT
Open the summary document
FF_CMP_COMPKIT
Open the composite document
FDK Programmer’s Reference 109
3
FDK Function Reference
F_ApiCompare()
Returns
An F_CompareRetT data structure. F_CompareRetT is defined as:
typedef struct {
F_ObjHandleT sumId; /* The ID of the summary document */
F_ObjHandleT compId; /* The ID of the composite document */
} F_CompareRetT;
If you use F_ApiCompare() to compare two books, it sets compId to 0.
If F_ApiCompare() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID.
FE_BadCompare
olderId and newerId don’t specify the same types of files.
FE_CompareTypes
One of the files isn’t a FrameMaker product document or book or one
file is a book and the other is a document.
FE_WrongProduct
Current FrameMaker product doesn’t support the operation.
Example
The following code opens two documents and compares them:
. . .
F_ObjHandleT oldId, newId;
IntT flags;
F_CompareRetT cmp;
oldId = F_ApiSimpleOpen("/tmp/old.doc", False);
newId = F_ApiSimpleOpen("/tmp/new.doc", False);
flags = FF_CMP_CHANGE_BARS | FF_CMP_COMPKIT;
cmp = F_ApiCompare(oldId, newId, flags, "Comment",
"", "REPLACED TEXT", 75);
if (!cmp.compId)
F_ApiAlert("Couldn’t compare", FF_ALERT_CONTINUE_NOTE);
. . .
110
FDK Programmer’s Reference
F_ApiConnectToSession()
...
FDK Function Reference
F_ApiConnectTo Session()
F_ApiConnectToSession() connects the calling process to an existing
FrameMaker product session process.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiConnectToSession(ConStringT clientName,
ConStringT hostname,
IntT prognum);
Arguments
clientName
The registered name of the client
hostname
The host running the FrameMaker product session
prognum
The RPC number of the FrameMaker product session
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiConnectToSession() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_DupName
The client attempted to connect to the same session
FE_ReadOnly
The client attempted to connect to a session started with the
-noapi option
FE_OutOfRange
The client attempted to connect to a session of a
FrameMaker product version that doesn’t support this
function
FE_NameNotFound
There is no FrameMaker product session
See also
“” on page 171, “F_ApiDisconnectFromSession()” on page 154
F_ApiCopy()
F_ApiCopy() copies the current selection to the FrameMaker product Clipboard.
FDK Programmer’s Reference 111
3
FDK Function Reference
F_ApiCopy()
Synopsis
#include "fapi.h"
. . .
IntT F_ApiCopy(F_ObjHandleT docId,
IntT flags);
Arguments
docId
The ID of the document from which to copy the selection.
flags
Bit field that specifies how to copy the text and how to handle interactive alerts. For
default settings, specify 0.
If you specify 0 for flags, F_ApiCopy() suppresses any interactive alerts or
warnings that arise. You can also OR the following values into flags.
flags constant
Meaning
FF_INTERACTIVE
Prompt user with dialog or alert boxes that arise
FF_STRIP_HYPERTEXT
Do not copy any hypertext markers in the selection
FF_VISIBLE_ONLY
Copy only the visible portion of the selection
The FF_INTERACTIVE flag takes precedence over other flags. So, if you specify
FF_INTERACTIVE | FF_VISIBLE_ONLY and the selection is not visible, the
FrameMaker product allows the user to choose whether to copy the selection.
112
FDK Programmer’s Reference
F_ApiCopy()
...
FDK Function Reference
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiCopy() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_WrongProduct
Current FrameMaker product doesn’t support
operation
FE_BadSelectionForOperation
Selection doesn’t support operation
FE_Canceled
User or parameters canceled the operation
FE_BadOperation
Parameters specified an invalid operation
Example
The following code selects the first 10 characters of the paragraph containing the
insertion point and copies them to the FrameMaker product Clipboard:
. . .
F_TextRangeT tr;
F_ObjHandleT docId, pgfId, nextpgfId;
/* Get current text selection. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId,docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
/* Set text selection. */
tr.beg.offset = 0;
tr.end.offset = 10;
F_ApiSetTextRange(FV_SessionId,docId, FP_TextSelection, &tr);
F_ApiCopy(docId, 0);
. . .
See also
“F_ApiClear()” on page 96, “F_ApiCut()” on page 119, and “F_ApiPaste()” on
page 370.
FDK Programmer’s Reference
113
3
FDK Function Reference
F_ApiCopyStructureType()
F_ApiCopy StructureType( )
The following functions copy frequently used API structures. These functions perform
a complete copy, copying any arrays or strings referenced by the structures.
Synopsis
#include "fapi.h"
. . .
F_AttributeT F_ApiCopyAttribute(F_AttributeT *fromattribute);
F_AttributeDefT F_ApiCopyAttributeDef(
F_AttributeDefT *fromattributedef);
F_AttributeDefsT F_ApiCopyAttributeDefs(
F_AttributeDefsT *fromattributedefs);
F_AttributesT F_ApiCopyAttributes(
F_AttributesT *fromattributes);
F_ElementCatalogEntriesT F_ApiCopyElementCatalogEntries(
F_ElementCatalogEntriesT *fromelementcatents);
F_FontsT F_ApiCopyFonts(F_FontsT *fonts);
F_IntsT F_ApiCopyInts(F_IntsT *fromints);
F_MetricsT F_ApiCopyMetrics(F_MetricsT *frommetrics);
F_PointsT F_ApiCopyPoints(F_PointsT *frompoints);
F_PropValT F_ApiCopyProp(F_PropValT *frompropp);
F_PropValsT F_ApiCopyPropVals(F_PropValsT *frompvp);
StringT F_ApiCopyString(ConStringT s);
F_StringsT F_ApiCopyStrings(F_StringsT *fromstrings);
F_TabT F_ApiCopyTab(F_TabT *fromtab);
F_TabsT F_ApiCopyTabs(F_TabsT *fromtabs);
F_TextItemT F_ApiCopyTextItem(F_TextItemT *fromtip);
F_TextItemsT F_ApiCopyTextItems(F_TextItemsT *fromip);
F_UBytesT F_ApiCopyUBytes(F_UBytesT *fromubytes);
F_UIntsT F_ApiCopyUInts(F_UIntsT *fromuints);
F_TypedValT F_ApiCopyVal(F_TypedValT *fromvalp);
Arguments
fromStructureType
The structure to copy
Returns
A copy of the specified structure.
114
FDK Programmer’s Reference
F_ApiCustomDoc()
...
FDK Function Reference
Example
The following code copies the list of font family names available in the current session:
. . .
F_StringsT familyNames, strs;
familyNames = F_ApiGetStrings(0, FV_SessionId,
FP_FontFamilyNames);
strs = F_ApiCopyStrings(&familyNames);
F_ApiDeallocateStrings(&familyNames);
. . .
F_ApiCustomDoc()
F_ApiCustomDoc() creates a new custom document using the FrameMaker
product’s default new document template. For more information on default new
document templates, see “Documents” in the FDK Programmer’s Guide.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiCustomDoc(MetricT width,
MetricT height,
IntT numCols,
MetricT columnGap,
MetricT topMargin,
MetricT botMargin,
MetricT leftinsideMargin,
MetricT rightoutsideMargin,
IntT sidedness,
BoolT makeVisible);
Arguments
width
The document page width.
height
The document page height.
numCols
The default number of columns.
columnGap
The default column spacing.
FDK Programmer’s Reference
115
3
116
FDK Function Reference
F_ApiCustomDoc()
topMargin
The document page top margin.
botMargin
The document page bottom margin.
leftinsideMargin
The left margin for single-sided documents, or the inside margin
for double-sided documents.
rightoutsideMargin
The right margin for single-sided documents, or the outside
margin for double-sided documents.
sidedness
A constant that specifies whether the document is single-sided or
double-sided and on which side the document starts. See the
following table for the list of constants.
makeVisible
Specifies whether the document is visible after it is created. Set
to True to make the document visible.
FDK Programmer’s Reference
F_ApiCustomDoc()
...
FDK Function Reference
The sidedness argument can have the values shown in the following table.
sidedness constant
New document page characteristics
FF_Custom_SingleSided
Single-sided
FF_Custom_FirstPageRight
Double-sided, starting with a right page
FF_Custom_FirstPageLeft
Double-sided, starting with a left page
Returns
The ID of the new document if it is successful, or 0 if it fails.
If F_ApiCustomDoc() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this operation
FE_BadParameter
Parameter has an invalid value
Example
The following code creates a custom document with the properties specified in the
dialog box in Figure 3-6:
. . .
#define in ((MetricT) 65536*72) /* A Frame metric inch. */
F_ObjHandleT docId;
docId = F_ApiCustomDoc(F_MetricFractMul(in,17,2), 11*in, 1,
F_MetricFractMul(in,1,4), in, in, in, in,
FF_Custom_SingleSided, True);
. . .
FDK Programmer’s Reference
117
3
FDK Function Reference
F_ApiCustomDoc()
Figure 3-6 Custom document dialog box
See also
“F_ApiSimpleNewDoc()” on page 471 and “F_ApiOpen()” on page 361.
118
FDK Programmer’s Reference
F_ApiCut()
...
FDK Function Reference
F_ApiCut()
F_ApiCut() cuts the current selection to the FrameMaker product Clipboard.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiCut(F_ObjHandleT docId,
IntT flags);
Arguments
docId
The ID of the document from which to cut the current selection.
flags
Bit field that specifies how to cut the text and how to handle interactive alerts. For
default settings, specify 0.
If you specify 0 for flags, F_ApiCut() suppresses any interactive alerts or warnings
that arise, leaves selected table cells empty, and deletes hidden text. You can also OR
the following values into flags.
flags constant
Meaning
FF_INTERACTIVE
Prompt user with dialog or alert boxes that arise
FF_CUT_TBL_CELLS
Remove cut table cells
FF_VISIBLE_ONLY
Cut only the visible portion of the selection
FF_DONT_DELETE_HIDDEN_TEXT
Don’t cut hidden text
The FF_INTERACTIVE flag takes precedence over other flags. So, if you specify
FF_INTERACTIVE | FF_DONT_DELETE_HIDDEN_TEXT and the selection contains
hidden text, the FrameMaker product allows the user to choose whether to delete the
hidden text.
FDK Programmer’s Reference
119
3
FDK Function Reference
F_ApiCut()
Returns
FE_Success if it succeeds, or an error code if an error occurs
If F_ApiCut() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_WrongProduct
Current FrameMaker product doesn’t support
requested operation
FE_BadSelectionForOperation
Selection doesn’t support operation
FE_Canceled
User or parameters canceled the operation
FE_BadOperation
Parameters specified an invalid operation
Example
The following code cuts the selected text from a document:
. . .
F_ApiCut(docId, 0);
. . .
See also
“F_ApiClear()” on page 96, “F_ApiCopy()” on page 111, “F_ApiPaste()” on page 370,
“F_ApiPopClipboard()” on page 373, and “F_ApiPushClipboard()” on page 390.
120
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiDeallocateStructureType()
F_ApiDeallocate S t r u c t u r e Ty p e()
The following functions deallocate memory referenced by frequently used API
structures. These functions perform a deep deallocation, deallocating any arrays or
strings referenced by the structures.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiDeallocateAttribute(F_AttributeT *attribute);
VoidT F_ApiDeallocateAttributeDef(
F_AttributeDefT *attributedef);
VoidT F_ApiDeallocateAttributeDefs(
F_AttributeDefsT *attributedefs);
VoidT F_ApiDeallocateAttributes(F_AttributesT *attributes);
VoidT F_ApiDeallocateElementCatalogEntries(
F_ElementCatalogEntriesT *elementcatents);
VoidT F_ApiDeallocateFonts(F_FontsT *fonts);
VoidT F_ApiDeallocateInts(F_IntsT *ints);
VoidT F_ApiDeallocateMetrics(F_MetricsT *metrics);
VoidT F_ApiDeallocatePoints(F_PointsT *points);
VoidT F_ApiDeallocatePropVal(F_PropValT *prop);
VoidT F_ApiDeallocatePropVals(F_PropValsT *pvp);
VoidT F_ApiDeallocateString(StringT s);
VoidT F_ApiDeallocateStrings(F_StringsT *strings);
VoidT F_ApiDeallocateTab(F_TabT *tab);
VoidT F_ApiDeallocateTabs(F_TabsT *tabs);
VoidT F_ApiDeallocateTextItem(F_TextItemT *tip);
VoidT F_ApiDeallocateTextItems(F_TextItemsT *ip);
VoidT F_ApiDeallocateUBytes(F_UBytesT *ubytes);
VoidT F_ApiDeallocateUInts(F_UIntsT *uints);
VoidT F_ApiDeallocateVal(F_TypedValT *valp);
Arguments
StructureType
The structure referencing memory that needs to be deallocated
Returns
VoidT.
FDK Programmer’s Reference 121
3
FDK Function Reference
F_ApiDefineAndAddCommand()
Example
The following code deallocates a property list:
. . .
F_PropValsT props;
. . .
F_ApiDeallocatePropVals(&props);
. . .
F_ApiDefineAndAddCommand()
F_ApiDefineAndAddCommand() defines a command (FO_Command object) and
adds it to a menu or menu bar.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiDefineAndAddCommand(IntT cmd,
F_ObjHandleT toMenuId,
StringT name,
StringT label,
StringT shortcut);
Arguments
cmd
The integer that the FrameMaker product passes to your client’s
F_ApiCommand() function when the user chooses the menu item or types the
keyboard shortcut for the command. It must be unique for each command in
your client, but it need not be unique for different clients.
toMenuId
The ID of the menu to which to add the command.
name
A unique name for the command. If the user or a client has already defined a
command or menu with this name, the new command replaces it.
label
The title of the command as it appears on the menu.
shortcut
The keyboard shortcut sequence. Many FrameMaker product commands use
shortcuts beginning with Escape (\!). To specify Escape when you create a
command, use \\! in the string you pass to shortcut.
To add the new command to a menu that you have created, set toMenuId to the ID
returned by the F_ApiDefineMenu() or F_ApiDefineAndAddMenu() call that
created the menu.
122
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiDefineAndAddCommand()
To add a command to a FrameMaker product menu, you must first get the menu’s ID.
To get its ID, call F_ApiGetNamedObject() with the objectName parameter set
to its name. For example, to get the ID of the Edit menu, use the following code:
. . .
F_ObjHandleT editMenuId;
editMenuId = F_ApiGetNamedObject(FV_SessionId, FO_Menu,
"EditMenu");
. . .
The [Files] section of the maker.ini file specifies the location of the menu and command
configuration files that list FrameMaker’s menus and commands.
The following table lists some FrameMaker product menus and the names you use to
specify them:
Menu title
Menu name
Edit
EditMenu
File
FileMenu
Format
FormatMenu
Graphics
GraphicsMenu
Special
SpecialMenu
Table
TableMenu
View
ViewMenu
Help
!HelpMenu
If you call F_ApiDefineAndAddCommand() and specify the name of a command
that is already defined in the user’s menu configuration files, the FrameMaker product
gives precedence to the definition in the configuration files. If the configuration files
assign a label or a shortcut to the command, the FrameMaker product uses it instead of
the one you specify. If the command is already a menu item, the FrameMaker product
ignores the menu that you specify and leaves the menu item where it is.
If the user has already put the menu item specified by name on the menus,
F_ApiDefineAndAddCommand() ignores the toMenuId parameter and connects
the command to the existing menu item. If the menu item is not already on a menu,
F_ApiDefineAndAddCommand() adds it to the bottom of the menu specified by
toMenuId.
FDK Programmer’s Reference 123
3
FDK Function Reference
F_ApiDefineAndAddCommand()
..............................................................................
IMPORTANT: If you want to add a command to more than one menu, do not call
F_ApiDefineAndAddCommand() repeatedly to add the command to the menus. This
does not work, because if a command already exists,
F_ApiDefineAndAddCommand() ignores the toMenuId argument and just
replaces the existing command with the new command. To add a command to multiple
menus, define the command first by calling F_ApiDefineCommand() or
F_ApiDefineCommandEx()—or call F_ApiDefineAndAddCommand(), if you
want to define and add the command to a menu at the same time—and then call
F_ApiAddCommandToMenu() to add the command to other menus.
..............................................................................
Returns
The ID of the new command (FO_Command object), or 0 if an error occurs.
If F_ApiDefineAndAddCommand() fails, the API assigns one of the following
values to FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this
operation or fmbatch is running
FE_BadOperation
Parameters specify an invalid operation
FE_NotMenu
The menu specified by toMenuId
doesn’t exist
FE_BadParameter
Parameter has an invalid value
FE_SystemError
System error
Example
The following code creates a command named MyCmd and adds it to the Utilities
menu:
. . .
#define MY_CMD 1
F_ObjHandleT menuId, cmdId;
menuId = F_ApiGetNamedObject(FV_SessionId, FO_Menu,
"UtilitiesMenu");
cmdId = F_ApiDefineAndAddCommand(MY_CMD, menuId, "MyCmd",
"My Cmd", "\\!MC");
. . .
124
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiDefineAndAddCommandEx()
See also
“F_ApiAddCommandToMenu()” on page 65, “F_ApiDefineCommand()” on page 132,
and “F_ApiGetNamedObject()” on page 216.
F_ApiDefineAndAddCommandEx()
F_ApiDefineAndAddCommandEx() is similar to
F_ApiDefineAndAddCommand() with an extra parameter to specify views in which
this command is valid.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiDefineAndAddCommandEx (IntT cmd,
F_ObjHandleT toMenuId,
ConStringT tag,
ConStringT label,
ConStringT shortcut,
const F_StringsT *validViewsList);
FDK Programmer’s Reference 125
3
FDK Function Reference
F_ApiDefineAndAddCommandEx()
Arguments
cmd
The integer that the FrameMaker product passes to your client’s
F_ApiCommand() function when the user chooses the menu item
or types the keyboard shortcut for the command. It must be unique
for each command in your client, but it need not be unique for
different clients.
toMenuId
The ID of the menu to which to add the command.
name
A unique name for the command. If the user or a client has already
defined a command or menu with this name, the new command
replaces it.
label
The title of the command as it appears on the menu.
shortcut
The keyboard shortcut sequence. Many FrameMaker product
commands use shortcuts beginning with Escape (\!). To specify
Escape when you create a command, use \\! in the string you
pass to shortcut.
validViewsList
The view(s) for which this command is valid. The view(s) can be:
WYSIWYG View
Code View
Author View
corresponding to the views supported by FrameMaker.
To add the new command to a menu that you have created, set toMenuId to the ID
returned by the F_ApiDefineMenu() or F_ApiDefineAndAddMenu() call that
created the menu.
To add a command to a FrameMaker product menu, you must first get the menu’s ID.
To get its ID, call F_ApiGetNamedObject() with the objectName parameter set
to its name. For example, to get the ID of the Edit menu, use the following code:
. . .
F_ObjHandleT editMenuId;
editMenuId = F_ApiGetNamedObject(FV_SessionId, FO_Menu,
"EditMenu");
. . .
The [Files] section of the maker.ini file specifies the location of the menu and command
configuration files that list FrameMaker’s menus and commands.
126
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiDefineAndAddCommandEx()
The following table lists some FrameMaker product menus and the names you use to
specify them:
Menu title
Menu name
Edit
EditMenu
File
FileMenu
Format
FormatMenu
Graphics
GraphicsMenu
Special
SpecialMenu
Table
TableMenu
View
ViewMenu
Help
!HelpMenu
If you call F_ApiDefineAndAddCommandEx() and specify the name of a command
that is already defined in the user’s menu configuration files, the FrameMaker product
gives precedence to the definition in the configuration files. If the configuration files
assign a label or a shortcut to the command, the FrameMaker product uses it instead of
the one you specify. If the command is already a menu item, the FrameMaker product
ignores the menu that you specify and leaves the menu item where it is.
If the user has already put the menu item specified by name on the menus,
F_ApiDefineAndAddCommandEx() ignores the toMenuId parameter and
connects the command to the existing menu item. If the menu item is not already on a
menu, F_ApiDefineAndAddCommandEx() adds it to the bottom of the menu
specified by toMenuId.
..............................................................................
IMPORTANT: If you want to add a command to more than one menu, do not call
F_ApiDefineAndAddCommandEx() repeatedly to add the command to the menus.
This does not work, because if a command already exists,
F_ApiDefineAndAddCommandEx() ignores the toMenuId argument and just
replaces the existing command with the new command. To add a command to multiple
menus, define the command first by calling F_ApiDefineCommand() or
F_ApiDefineCommandEx()—or call F_ApiDefineAndAddCommandEx(), if
you want to define and add the command to a menu at the same time—and then call
F_ApiAddCommandToMenu() to add the command to other menus.
..............................................................................
FDK Programmer’s Reference 127
3
FDK Function Reference
F_ApiDefineAndAddCommandEx()
Returns
The ID of the new command (FO_Command object), or 0 if an error occurs.
If F_ApiDefineAndAddCommandEx() fails, the API assigns one of the following
values to FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this
operation or fmbatch is running
FE_BadOperation
Parameters specify an invalid operation
FE_NotMenu
The menu specified by toMenuId
doesn’t exist
FE_BadParameter
Parameter has an invalid value
FE_SystemError
System error
Example
The following code makes the command valid in WYSIWYG View and Author View:
StringT validViews[2] = {(StringT)"WYSIWYG
View",(StringT)"Author View"};
F_StringsT validViewsList = {2, validViews};
F_ObjHandleT cmdId = F_ApiDefineAndAddCommandEx (CMD_NUM,
menuId, "api_command", "API Command", !ac", &validViewsList);
The following code makes the command valid in all views:
StringT validViews = {(StringT)"All"};
F_StringsT validViewsList = {1, &validViews};
F_ObjHandleT cmdId = F_ApiDefineAndAddCommandEx (CMD_NUM,
menuId, "api_command", "API Command", !ac", &validViewsList)
128
FDK Programmer’s Reference
F_ApiDefineAndAddMenu()
...
FDK Function Reference
F_ApiDefineAndAddMenu()
F_ApiDefineAndAddMenu() defines a menu (FO_Menu object) and adds it to
another menu.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiDefineAndAddMenu(F_ObjHandleT toMenuId,
StringT name,
StringT label);
Arguments
toMenuId
The name of the menu or menu bar to which to add the new menu.
name
A unique name for the new menu. If the user or an FDK client has already
defined a command or menu with this name, the new menu replaces it.
label
The title of the menu as it appears on the menu bar or menu.
To add a menu to a menu or menu bar created by your client, set toMenuId to the ID
returned by the F_ApiDefineMenu() or F_ApiDefineAndAddMenu() call that
created the menu or menu bar.
To add a menu to one of a FrameMaker product’s menus or menu bars, you must get the
menu or menu bar’s ID. To get its ID, call F_ApiGetNamedObject() with the
objectName parameter set to its name. For example, to get the ID of the FrameMaker
main menu bar, use the following code:
. . .
F_ObjHandleT mainMenuId;
mainMenuId = F_ApiGetNamedObject(FV_SessionId, FO_Menu,
"!MakerMainMenu");
. . .
FDK Programmer’s Reference 129
3
FDK Function Reference
F_ApiDefineAndAddMenu()
The following table lists some of the menu bars that you can add menus to and the
strings that specify them. Menu bar names preceded by an exclamation mark (!) can’t
be removed by the user.
FrameMaker product menu bar
toMenuBar string
Menu bar for documents (complete menus)
!MakerMainMenu
Menu bar for documents (quick menus)
!QuickMakerMainMenu
Menu bar for documents (custom menus)
!CustomMakerMainMenu
Menu bar for books (complete menus)
!BookMainMenu
Menu bar for books (quick menus)
!QuickBookMainMenu
Structure menu bar (structured product interface only)
!StructureViewMainMenu
View-only menu bar
!ViewOnlyMainMenu
The [Files] section of the maker.ini file specifies the location of the menu and command
configuration files that list FrameMaker’s menus and commands.
..............................................................................
IMPORTANT: The menu you add appears only on the menu bar you specify. For
example, if you add a menu only to the !MakerMainMenu menu bar, the menu does
not appear if the user switches to quick menus. For your menu to appear after the user
has switched to quick menus, you must also add it to !QuickMakerMainMenu.
..............................................................................
If you call F_ApiDefineAndAddMenu() and specify the name of a menu that is
already defined in the user’s menu configuration files, the FrameMaker product gives
precedence to the definition in the configuration files. If the configuration files assign a
label to the menu, the FrameMaker product uses it instead of the one you specify. If the
menu is already on a menu or menu bar, the FrameMaker product ignores the menu that
you specify and leaves the menu where it is.
If the menu specified by name is not already on a menu or menu bar,
F_ApiDefineAndAddMenu() adds it. How the FrameMaker product adds it depends
130
FDK Programmer’s Reference
F_ApiDefineAndAddMenu()
...
FDK Function Reference
on the type of menu you are adding it to. The following table lists the types of menus
you can add another menu to and how the FrameMaker product adds the menu.
Type of menu or menu bar
you are adding a menu to
How the FrameMaker product
implements the added menu
Where the FrameMaker
product adds the menu
Menu bar
Pull-down menu
At the right of the menu
bar
Pull-down menu
Pull-right menu
At the bottom of the pulldown menu
Pop-up menu
Pull-right menu
At the bottom of the popup menu
Pull-right menu
Pull-right menu
At the bottom of the pullright menu
Returns
The ID of the new menu (FO_Menu object), or 0 if an error occurs.
If F_ApiDefineAndAddMenu() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this
operation or fmbatch is running
FE_BadOperation
Parameters specify an invalid operation
FE_NotMenu
The menu specified by toMenuId doesn’t exist or
isn’t a menu; tag specifies an existing command
FE_BadParameter
Parameter has an invalid value
FE_SystemError
System error
FDK Programmer’s Reference 131
3
FDK Function Reference
F_ApiDefineCommand()
Example
The following code defines and adds a menu named APIMenu to the FrameMaker main
menu:
. . .
#define MY_CMD 1
F_ObjHandleT menubarId, menuId, cmdId;
/* Get ID of FrameMaker main menu. */
menubarId = F_ApiGetNamedObject(FV_SessionId, FO_Menu,
"!MakerMainMenu");
/* Define and add a menu to the main menu. */
menuId = F_ApiDefineAndAddMenu(menubarId, "APIMenu",
"API Menu");
/* Add a command to the menu. */
cmdId = F_ApiDefineAndAddCommand(MY_CMD, menuId, "MyCmd",
"My Cmd", "");
. . .
See also
“F_ApiAddMenuToMenu()” on page 68, “F_ApiDefineMenu()” on page 136, and
“F_ApiGetNamedObject()” on page 216.
F_ApiDefineCommand()
F_ApiDefineCommand() defines a command (FO_Command object). After you
define a command, you can add it to a menu with F_ApiAddCommandToMenu().
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiDefineCommand(IntT cmd,
StringT name,
StringT label,
StringT shortcut);
132
FDK Programmer’s Reference
F_ApiDefineCommand()
...
FDK Function Reference
Arguments
cmd
The integer that the FrameMaker product passes to your client’s
F_ApiCommand() function when the user executes the command. It must be
unique for each menu item in your client, but it need not be unique for different
clients.
name
A unique name for the command. If the user or a client has already defined a
command or menu with this name, the new command replaces it.
label
The title of the menu item as it appears on the menu.
shortcut
The keyboard shortcut sequence. Many FrameMaker product commands use
shortcuts beginning with Escape (\!). To specify Escape when you create a
command, use \\! in the string you pass to shortcut.
If you call F_ApiDefineCommand() and specify the name of a command that is
already defined in the user’s menu configuration files, the FrameMaker product gives
precedence to the definition in the configuration files. If the configuration files assign a
label or a shortcut to the command, the FrameMaker product uses it instead of the one
you specify.
Returns
The ID of the new command (FO_Command object), or 0 if an error occurs.
If F_ApiDefineCommand() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this
operation or fmbatch is running
FE_BadOperation
Parameters specify an invalid operation
FE_BadParameter
Parameter has an invalid value
FE_NotCommand
tag specifies a menu; can’t redefine a menu as a
command
FE_SystemError
System error
FDK Programmer’s Reference 133
3
FDK Function Reference
F_ApiDefineCommandEx()
Example
The following code defines a command named CheckGrammar that has a keyboard
shortcut of Esc C G:
. . .
#define CHECK_GRAMMAR 1
F_ObjHandleT cmdId;
cmdId = F_ApiDefineCommand(CHECK_GRAMMAR, "CheckGrammar",
"Check Grammar", "\\!CG");
. . .
See also
“F_ApiDefineCommandEx()” on page 134, “F_ApiAddCommandToMenu()” on
page 65, “F_ApiDefineAndAddCommand()” on page 122, and
“F_ApiGetNamedObject()” on page 216.
F_ApiDefineCommandEx()
F_ApiDefineCommandEx() is similar to F_ApiDefineCommand() with an extra
parameter to specify views in which this command is valid. After you define a
command, you can add it to a menu with F_ApiAddCommandToMenu().
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiDefineCommandEx(IntT cmd,
ConStringT name,
ConStringT label,
ConStringT shortcut,
const F_StringsT *validViewsList);
134
FDK Programmer’s Reference
F_ApiDefineCommandEx()
...
FDK Function Reference
Arguments
cmd
The integer that the FrameMaker product passes to your client’s
F_ApiCommand() function when the user executes the command. It
must be unique for each menu item in your client, but it need not be
unique for different clients.
name
A unique name for the command. If the user or a client has already
defined a command or menu with this name, the new command
replaces it.
label
The title of the menu item as it appears on the menu.
shortcut
The keyboard shortcut sequence. Many FrameMaker product
commands use shortcuts beginning with Escape (\!). To specify
Escape when you create a command, use \\! in the string you pass
to shortcut.
validViewsList
The views for which this command is valid. The view(s) can be:
WYSIWYG View
Code View
Author View
corresponding to the views supported by FrameMaker.
If you call F_ApiDefineCommandEx() and specify the name of a command that is
already defined in the user’s menu configuration files, the FrameMaker product gives
precedence to the definition in the configuration files. If the configuration files assign a
label or a shortcut to the command, the FrameMaker product uses it instead of the one
you specify.
Returns
The ID of the new command (FO_Command object), or 0 if an error occurs.
If F_ApiDefineCommandEx() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this
operation or fmbatch is running
FE_BadOperation
Parameters specify an invalid operation
FE_BadParameter
Parameter has an invalid value
FE_NotCommand
tag specifies a menu; can’t redefine a menu as a
command
FE_SystemError
System error
FDK Programmer’s Reference 135
3
FDK Function Reference
F_ApiDefineMenu()
Example
The following code makes the comman valid in WYSIWYG view and Author view:
. . .
StringT validViews[2] = {(StringT)"WYSIWYG iew",(StringT)"Author
View"};
F_StringsT validViewsList = {2, validViews};
F_ObjHandleT cmdId = F_ApiDefineCommandEx (CMD_NUM,
"api_command", "API Command", "!ac", &validViewsList);
. . .
See also
“F_ApiAddCommandToMenu()” on page 65, “F_ApiDefineAndAddCommand()” on
page 122, and “F_ApiGetNamedObject()” on page 216.
F_ApiDefineMenu()
F_ApiDefineMenu() defines a menu (FO_Menu object). After you define a menu,
you can add it to a menu or a menu bar with F_ApiAddMenuToMenu().
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiDefineMenu(StringT name,
StringT label);
Arguments
name
A unique name for the menu. If the user or an FDK client has
already defined a command or menu with this name, the new menu replaces it.
label
The title of the menu as it appears on the menu bar or menu.
If you call F_ApiDefineMenu() and specify the name of a menu that is already
defined in the user’s menu configuration files, the FrameMaker product gives
precedence to the definition in the configuration files. If the configuration files assign a
label to the menu, the FrameMaker product uses it instead of the one you specify.
If the user has already defined a menu with the name specified by name,
F_ApiDefineMenu() ignores the label parameter and uses the label specified by
the user.
136
FDK Programmer’s Reference
F_ApiDefineMenu()
...
FDK Function Reference
Returns
The ID of the new menu (FO_Menu object), or 0 if an error occurs.
If F_ApiDefineMenu() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this
operation or fmbatch is running
FE_BadOperation
Parameters specify an invalid operation
FE_NotMenu
tag specifies a command; can’t redefine a
command as a menu
FE_BadParameter
Parameter has an invalid value
FE_SystemError
System error
Example
The following code adds a menu named Search to the menu bar for books. It also adds
a command labeled Find and Replace to the Search menu.
. . .
#define FIND_REPLACE 1
F_ObjHandleT menubarId, menuId;
/* Define menu and add a command to it. */
menuId = F_ApiDefineMenu("SearchMenu", "Search");
F_ApiDefineAndAddCommand(FIND_REPLACE, menuId, "FindReplace",
"Find and Replace", "\\!fR");
/* Put the menu on the menu bar for books. */
menubarId = F_ApiGetNamedObject(FV_SessionId, FO_Menu,
"!BookMainMenu");
F_ApiAddMenuToMenu(menubarId, menuId);
. . .
See also
“F_ApiAddMenuToMenu()” on page 68, “F_ApiDefineAndAddMenu()” on page 129,
and “F_ApiGetNamedObject()” on page 216.
FDK Programmer’s Reference 137
3
FDK Function Reference
F_ApiDelete()
F_ApiDelete()
F_ApiDelete() deletes an object from a document. Be careful about possible side
effects when you use F_ApiDelete(). When you delete some objects, the API
deletes any objects they contain. For example, when you delete a table, the API deletes
all the FO_Row and FO_Cell objects that it contains. When you delete a frame, the
API deletes all the objects in it.
The following types of objects can’t be deleted with F_ApiDelete():

FO_Book

FO_Doc

FO_HiddenPage

FO_Cell

FO_MasterPage (Left and Right master pages only)

FO_UnanchoredFrame (page frames only)

FO_Color (predefined colors only)

FO_Session

FO_VarFmt (system variables only)
To delete table rows and columns, use F_ApiDeleteCols() and
F_ApiDeleteRows() instead of F_ApiDelete(). To delete a page frame, delete
the page that contains it. To delete text, see “F_ApiDeleteText()” on page 147.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiDelete(F_ObjHandleT docId,
F_ObjHandleT objId);
Arguments
docId
The ID of the document, book, or menu containing the object
objId
The ID of the object to remove
Returns
FE_Success if it succeeds, or an error code if an error occurs.
138
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiDeleteAllKeyDefinitions()
If F_ApiDelete() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadDelete
Specified object couldn’t be deleted
FE_BadOperation
Function call specified an illegal operation
FE_BadParameter
Function call specified an invalid parameter
FE_NotMenu
objId is a menu item (FO_Menu, FO_Command, or
FO_MenuItemSeparator), but docId is not the ID of the menu
containig it
Example
The following code deletes all the markers in the current document:
. . .
F_ObjHandleT docId, mrkrId, prvmrkrId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
/* Get first marker, then traverse markers and delete them. */
mrkrId = F_ApiGetId(FV_SessionId, docId, FP_FirstMarkerInDoc);
while (mrkrId)
{
/* As each marker is deleted, its FP_NextMarkerInDoc property
** becomes invalid, so it is necessary to get the next marker
** before deleting the current one.
*/
prvmrkrId = mrkrId;
mrkrId = F_ApiGetId(docId, prvmrkrId, FP_NextMarkerInDoc);
F_ApiDelete(docId, prvmrkrId);
}
. . .
F _ A p i D e l et e A l l K ey D ef i n i t i o n s ( )
Deletes all the key definitions in the specified key catalog.
FDK Programmer’s Reference 139
3
FDK Function Reference
F_ApiDeleteCols()
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiDeleteAllKeyDefinitions(F_ObjHandleT keyCatalogId)
Arguments
keyCatalogId
The ID of the Key Catalog from which to delete all key definitions.
If F_ApiDeleteAllKeyDefinitions() fails, the API assigns one of the
following values to FA_errno.
FA_errno value
Meaning
FE_BadObjId
The ID provided does not specify a Key Catalog.
F_ApiDeleteCols()
F_ApiDeleteCols() deletes columns from a table. To delete an entire table, use
F_ApiDelete().
Synopsis
#include "fapi.h"
. . .
IntT F_ApiDeleteCols(F_ObjHandleT docId,
F_ObjHandleT tableId,
IntT delColNum,
IntT numDelCols);
140
FDK Programmer’s Reference
F_ApiDeleteCols()
...
FDK Function Reference
Arguments
docId
The ID of the document containing the table.
tableId
The ID of the table containing the columns.
delColNum
The first column to delete. Columns are numbered from left to right, starting
with 0.
numDelCols
The number of columns to delete.
F_ApiDeleteCols() deletes the column specified by delColNum and
(numDelCols-1) columns to the right of it.
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiDeleteCols() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support requested operation
FE_BadOperation
Parameter specifies an invalid operation
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid table ID
Example
The following code deletes the first two columns in the selected table in the active
document:
. . .
F_ObjHandleT docId, tblId;
/* Get the document and table IDs. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tblId = F_ApiGetId(FV_SessionId, docId, FP_SelectedTbl);
F_ApiDeleteCols(docId, tblId, 0, 2);
. . .
FDK Programmer’s Reference 141
3
FDK Function Reference
F_ApiDeleteComponentFromProject()
See also
“F_ApiDelete()” on page 138 and “F_ApiDeleteRows()” on page 145.
Stru cture d
F_ApiDeleteCondTag()
F_ApiDeleteCondTag() deletes a conditional tag from a document.
Synopsis
#include "fapi.h"
StatusT F_ApiDeleteCondTag(F_ObjHandleT docId, F_ObjHandleT
condTagId, IntT action);
Arguments
docId
The id of the document containing the conditional tag to be deleted
condTagId
The id of the conditional tag object (type: FO_CondFmt) in the doc
action
One of the following:
FF_UNTAGGED_ASK: Prompt the user
FF_UNTAGGED_UNCOND: Make text unconditional
FF_UNTAGGED_DELETE: Delete text
Returns
Returns one of the following
FE_BadDocId
Document id is invalid
FE_BadObjId
Conditional tag object id is invalid.
FE_ReadOnly
Document is read only.
FE_BadValue
Action is not one of the specified values
FE_Success
Deletion was successful
F_ApiDeleteComponentFromProject()
F_ApiDeleteComponentFromProject() deletes any file or folder component
from the project.
142
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiDeleteComponentFromProject()
..............................................................................
IMPORTANT: The corresponding component is also removed from your file system.
..............................................................................
Synopsis
#include “fapi.h”
. . .
VoidT F_ApiDeleteComponentFromProject FARGS(ConStringT
strComponentFullPath);
Arguments
strComponentFullPath
The absolute path of the component to be removed.
Returns
VoidT
Example
The following code deletes the component from the project whose path is specified in
the strComponentFullPath argument.
. . .
ConStringT strComponentFullPath =
"C:\fm\fdkreference\images\image1.png";
. . .
F_ApiDeleteComponentFromProject(strComponentFullPath);
. . .
See also
“F_ApiNewProject()” on page 335, “F_ApiOpenProject()” on page 369,
“F_ApiSaveProject()” on page 408, “F_ApiAddLocationToProject()” on page 67, ,
“F_ApiEditComponentOfProject()” on page 157,
“F_ApiExploreComponentOfProject()” on
page 161,“F_ApiRenameComponentOfProject()” on page 396
FDK Programmer’s Reference 143
3
FDK Function Reference
F_ApiDeletePropByName()
F_ApiDeletePropByName()
F_ApiDeletePropByName() deletes an inset facet.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiDeletePropByName(F_ObjHandleT docId,
F_ObjHandleT objId,
StringT propName);
Arguments
docId
The ID of the document containing the inset whose facet you want to delete
objId
The ID of the inset
propName
The name of the facet you want to delete
Returns
VoidT.
If F_ApiDeletePropByName() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadPropNum
Specified property number is invalid
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropType
Incorrect property type for this function
Example
The following code deletes a facet called wks.facet:
. . .
F_ObjHandleT docId, insetId;
F_ApiDeletePropByName(docId, insetId, "wks.facet");
. . .
144
FDK Programmer’s Reference
F_ApiDeleteRows()
...
FDK Function Reference
F_ApiDeleteRows()
F_ApiDeleteRows() deletes rows from a table. Like the Delete command in the
FrameMaker product user interface, F_ApiDeleteRows() does not allow you to
delete more than one type of row at time. The range of rows you specify must be all
body rows, all header rows, or all footer rows.
To delete an entire table, use F_ApiDelete().
Synopsis
#include "fapi.h"
. . .
IntT F_ApiDeleteRows(F_ObjHandleT docId,
F_ObjHandleT tableId,
F_ObjHandleT refRowId,
IntT numDelRows);
Arguments
docId
The ID of the document containing the table
tableId
The ID of the table containing the rows
refRowId
The ID of the first row to delete
numDelRows
The number of rows to delete, including refRowId
F_ApiDeleteRows() deletes refRowId and (numDelRows - 1) rows below it.
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiDeleteRows() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support the requested operation.
FE_BadOperation
Parameter specifies an invalid operation.
FE_BadDocId
Invalid document ID.
FE_BadObjId
Invalid table or row ID.
FE_OutOfRange
The refRowId parameter does not specify a row in the table, or the
specified range includes more than one type of row (for example,
header rows and body rows).
FDK Programmer’s Reference 145
3
FDK Function Reference
F_ApiDeleteRows()
Example
The following code deletes the first row of the selected table:
. . .
F_ObjHandleT docId, tblId, rowId;
/* Get the document and selected table IDs. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tblId = F_ApiGetId(FV_SessionId, docId, FP_SelectedTbl);
/* Get the ID for the first row, then delete it. */
rowId = F_ApiGetId(docId, tblId, FP_FirstRowInTbl);
F_ApiDeleteRows(docId, tblId, rowId, 1);
. . .
See also
“F_ApiDelete()” on page 138 and “F_ApiDeleteCols()” on page 140.
146
FDK Programmer’s Reference
F_ApiDeleteText()
...
FDK Function Reference
F_ApiDeleteText()
F_ApiDeleteText() deletes a specified text range from a document.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiDeleteText(F_ObjHandleT docId,
F_TextRangeT *textRangep);
Arguments
docId
The ID of the document from which to delete the text
textRangep
The text range to delete
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiDeleteText() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDelete
Specified text couldn’t be deleted
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadRange
Specified text range is invalid
FE_NotTextObject
Object specified for the text range isn’t an object that
contains text, for example, a text frame (FO_TextFrame),
a paragraph (FO_Pgf) or a text line (FO_TextLine)
FE_OffsetNotFound
Offset specified for the text range couldn’t be found in the
specified paragraph or text line
FE_BadSelectionForOpe
ration
Selection is within a locked text range.
FDK Programmer’s Reference 147
3
FDK Function Reference
F_ApiDeleteTextInsetContents()
Example
The following code gets the text selection from the active document and deletes it:
. . .
F_TextRangeT tr;
F_ObjHandleT docId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId,docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
F_ApiDeleteText(docId, &tr);
. . .
See also
“F_ApiClear()” on page 96 and “F_ApiAddText()” on page 74.
F_ A p i D e l e t e TextInsetC on ten ts()
F_ApiDeleteTextInsetContents() deletes the text in a text inset. You must
unlock a text inset before you call F_ApiDeleteTextInsetContents() to delete
its contents. After you are done, you must relock the text inset.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiDeleteTextInsetContents(F_ObjHandleT docId,
F_ObjHandleT insetId);
Arguments
docId
The ID of the document containing the inset
insetId
The text inset containing the text to be deleted
Returns
FE_Success if it succeeds, or an error code if an error occurs.
148
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiDeleteTextInsetContents()
If F_ApiDeleteTextInsetContents() fails, the API assigns one of the
following values to FA_errno.
FA_errno value
Meaning
FE_BadDelete
Specified text couldn’t be deleted
FE_BadDocId
Invalid document ID
FE_BadObjId
The ID does not specify a text inset
FE_BadSelectionForOperation
The specified text inset is locked
Example
See “Updating a client text inset” in the FDK Programmer’s Guide.
See also
“F_ApiDelete()” on page 138.
Stru cture d
F_ApiDeleteUndefinedAttribute()
F_ApiDeleteUndefinedAttribute() deletes from structural elements, an
attribute for which no value is assigned. You can delete undefined attributes for a given
element, all elements of a specific type, or all elements in the document.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiDeleteUndefinedAttribute(F_ObjHandleT docId,
StringT attrName, IntT scope, F_ObjHandleT objId);
Arguments
docId
The ID of the document containing the element or elements whose attributes
you want to delete
attrName
The name of the attribute you want to delete
scope
One of FV_Element, FV_ElementsOfType, or FV_AllElements
objId
The element or element definition from which to delete the undefined attributes
The value for objId indicates a different type of object, depending on the value of
scope, as indicated by the following table:
FDK Programmer’s Reference 149
3
FDK Function Reference
F_ApiDeleteTextInsetContents()
If scope is:
objId must be:
FV_Element
The ID of the element from which you want to delete the
undefined attribute
FV_ElementsOfType
The element definition for the type of element from which you
want to delete the undefined attributes
FV_AllElements
0
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiDeleteUndefinedAttribute() fails, the API assigns one of the
following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_AttributeNot
Undefined
Specified attribute in specified element contains a value
Example
The following code deletes all undefined instances of the attribute named “author” in
the document:
. . .
F_ObjHandleT docId;
ErrorT err;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
err = F_ApiDeleteUndefinedAttribute(docId, (StringT)"author",
FV_AllElements, 0);
. . .
Stru cture d
F_ApiDemoteElement()
F_ApiDemoteElement() demotes the selected structural element or elements. The
element becomes a child of the sibling element before it.
150
FDK Programmer’s Reference
F_ApiDialogEvent()
...
FDK Function Reference
..............................................................................
IMPORTANT: At least one structural element must be selected when
F_ApiDemoteElement() is called.
..............................................................................
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiDemoteElement(F_ObjHandleT docId);
Arguments
docId
The document that contains the element selection
Returns
VoidT.
If F_ApiDemoteElement() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product isn’t Structured
FrameMaker
FE_BadDocId
Invalid document ID
FE_BadSelectionForOperation
Current text selection is invalid for this operation
Example
The following code demotes the selected elements in the active document:
. . .
F_ApiDemoteElement(F_ApiGetId(0, FV_SessionId, FP_ActiveDoc));
. . .
See also
“F_ApiPromoteElement()” on page 384.
F _ A p i D i a l o g E ve n t ( )
F_ApiDialogEvent() is a callback that you can define in your client. The
FrameMaker product calls F_ApiDialogEvent() when an event occurs in a dialog
box opened by your client.
FDK Programmer’s Reference 151
3
FDK Function Reference
F_ApiDialogEvent()
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiDialogEvent(IntT dlgNum,
IntT itemNum,
IntT modifiers);
Arguments
dlgNum
The number of the dialog in which the event occurred (the number you
specified when you called F_ApiModalDialog() or
F_ApiModelessDialog() to display the dialog)
itemNum
If an event occurred in a specific dialog item, the number (a nonnegative
integer) of the dialog item.
If the event doesn’t apply to a specific dialog item, a negative integer
constant specifying the event. See the table below for a list of constants.
modifiers
Bit flags specifying which modifier keys the user was holding down when
the event occurred. See the table below for a list of possible flags.
The API can set the itemNum parameter function to the ID of a dialog item or to one
of the following negative constants:
152
Constant
Meaning
FV_DlgClose
The user closed the dialog box.
FV_DlgEnter
The user moved input focus to the dialog box.
FV_DlgNoChange
The user pressed Shift-F8 to set the dialog box to As Is settings.
FDK Programmer’s Reference
F_ApiDialogEvent()
Constant
Meaning
FV_DlgReset
The user pressed Shift-F9 to reset the dialog box.
FV_DlgResize
A modeless dialog was resized. Here is a usage example:
...
FDK Function Reference
VoidT F_ApiDialogEvent(IntT dlgNum, IntT itemNum,
IntT modifiers)
{
switch(dlgNum)
{
case DLG_NUM1:
{
If
(itemNum == FV_DlgResize)
{
/* 'dlgNum' dialog has been resized - do something
if needed */
}
}
break;
}
}
The modifiers parameter can have the following bit flags set:
Flag
Meaning
FV_EvCaps
The Caps Lock key is on
FV_EvControl
The user was holding down the Control key
FV_EvMeta
The user was holding down the the Alt key (on Windows)
FV_EvShift
The user was holding down the Shift key
Returns
VoidT.
Example
See “Handling user actions in dialog boxes” in the FDK Programmer’s Guide.
FDK Programmer’s Reference 153
3
FDK Function Reference
F_ApiDialogItemId()
See also
“F_ApiDialogItemId()” on page 154.
F_ A p i D i a l o g ItemId ()
F_ApiDialogItemId() returns the ID of a dialog item with a specified item number.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiDialogItemId(F_ObjHandleT dialogId,
IntT itemNum);
Arguments
dialogId
The ID of the dialog box containing the item
itemNum
The item number of the item
Returns
The ID of the item with the specified number or 0 if there is no item with the specified
number.
Example
The following code gets the ID of the dialog with the number APPLY_BUTTON.
. . .
#define APPLY_BUTTON 1
F_ObjHandleT dlgId, dlgItemId;
. . .
dlgItemId = F_ApiDialogItemId(dlgId, APPLY_BUTTON);
. . .
See also
“F_ApiDialogEvent()” on page 151.
F_Api Di s conn ect FromS ession( )
F_ApiDisconnectFromSession() ends communication with a FrameMaker
product process.
154
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiDisconnectFromSession()
Synopsis
#include "fapi.h"
. . .
IntT F_ApiDisconnectFromSession();
Arguments
None.
Returns
FE_Success if it succeeds, or a system error code if an error occurs.
See also
“” on page 171, “F_ApiConnectToSession()” on page 111
Stru cture d
F _ A p i E l e me n t D e fI s Te xt ( )
Some structural elements in FrameMaker documents are placeholders for text. For
example, when a Para element contains text with a cross-reference element embedded
in it, the ranges of text that surround the cross-reference element are treated as elements
themselves. These elements are called text nodes.
When you are traversing the elements in a container, it is often useful to know if a given
element is a text node. F_ApiElementDefIsText() checks the value of an element
definition to determine whether the element it is applied to is a text node.
F_ApiElementDefIsText() is implemented as a macro.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiElementDefIsText(F_ObjHandleT docId,
F_ObjHandleT objId);
Arguments
docId
The ID of the document containing the element definition
objId
The ID of the element definition (FO_ElementDef)
Returns
True if the element definition corresponds to that of a text node, or False if it
doesn’t.
FDK Programmer’s Reference 155
3
FDK Function Reference
F_ApiDisconnectFromSession()
Example
The following code displays an alert if an element is a text node:
. . .
F_ObjHandleT edefId, objId;
. . .
if (F_ApiElementDefIsText(docId, edefId))
F_ApiAlert("Element is text node.", FF_ALERT_CONTINUE_NOTE);
. . .
Stru cture d
F _ A p i E l e me n t L o c To Text L o c ()
F_ApiElementLocToTextLoc() returns the text location structure that corresponds
with the current element location.
Synopsis
#include "fapi.h"
. . .
F_TextLocT F_ApiElementLocToTextLoc (F_ObjHandleT docId,
const F_ElementLocT *elocp);
Arguments
docId
The ID of the document containing the element
elocp
The element location structure to convert
Returns
An F_TextLocT structure specifying a text location. The F_TextLocT structure is
defined as:
typedef struct{
F_ObjHandleT objId; /* Object containing text */
IntT offset; /* Characters from start of object */
} F_TextLocT;
If F_ApiElementLocToTextLoc() fails, the API assigns one of the following
values to FA_errno.
156
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FDK Programmer’s Reference
FA_errno value
Meaning
FE_BadParameter
elocp was empty or a parameter was improperly specified
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
...
FDK Function Reference
F_ApiEditComponentOfProject()
Example
The following code converts an element location to a text location and gets the name of
the paragraph format for the text location:
. . .
F_ObjHandleT docId;
F_ElementRangeT eRange;
F_ElementLocT eloc;
F_TextLocT textLoc;
StringT paraTag;
. . .
eRange = F_ApiGetElementRange(FV_SessionId, docId,
FP_ElementSelection);
eloc = eRange.beg;
textLoc = F_ApiElementLocToTextLoc (docId, &eloc);
if (F_ApiGetObjectType(docId, textLoc.objId) == FO_Pgf)
paraTag = F_ApiGetString(docId, textLoc.objId, FP_Name);
. . .
See also
“F_ApiTextLocToElementLoc()” on page 480.
F_ApiEditComponentOfProject()
F_ApiEditComponentOfProject() opens the selected file for editing. If the file
format is recognised by FrameMaker, then it is opened in FrameMaker for editing. Else,
the file is opened for editing in the default program associated with the file.
Synopsis
#include “fapi.h”
. . .
VoidT F_ApiEditComponentOfProject FARGS(ConStringT
strComponentFullPath);
FDK Programmer’s Reference 157
3
FDK Function Reference
F_ApiEnableUnicode()
Arguments
strComponentFullPath
The absolute path of the file to edit.
Returns
VoidT
Example
The following code edits the component from the project whose path is specified in the
strComponentFullPath argument in the default program associated with the file.
. . .
ConStringT strComponentFullPath =
"C:\Sample_Project\book.ditamap";
. . .
F_ApiEditComponentOfProject(strComponentFullPath);
. . .
See also
“F_ApiNewProject()” on page 335(), “F_ApiOpenProject()” on page 369,
“F_ApiSaveProject()” on page 408, “F_ApiAddLocationToProject()” on page 67,
“F_ApiDeleteComponentFromProject()” on page 142,
“F_ApiExploreComponentOfProject()” on
page 161,“F_ApiRenameComponentOfProject()” on page 396
F_ApiEnableUnicode()
Used to enable Unicode Mode or Compatibility Mode.
Synopsis
#include "fapi.h"
...
VoidT F_ApiEnableUnicode(BoolT enable);
158
FDK Programmer’s Reference
F_ApiEnableUnicode()
...
FDK Function Reference
Arguments
enable
True enables Unicode Mode, False enables Compatibility Mode.
Default: False
Returns
VoidT
Example
The following example creates two alerts.
The first one shows the string "This will be treated as FrameRoman on
English locale: Ч ÎƧ ÿ¥" on an English locale.
The second one shows the string "This will be treated as Unicode on
every locale: ä 뮤 ‫ ش‬." on any locale.
#include "fencode.h"
. . .
F_ApiAlert("This will be treated as FrameRoman on English
locale:
\xC3\xA4 \xEB\xAE\xA4 \xD8\xB4",
FF_ALERT_CONTINUE_NOTE);
F_ApiEnableUnicode(True);
F_ApiAlert("This will be treated as Unicode on every locale:
\xC3\xA4
\xEB\xAE\xA4 \xD8\xB4",
FF_ALERT_CONTINUE_NOTE);
. . .
FDK Programmer’s Reference 159
3
FDK Function Reference
F_ApiErr()
F_ApiErr()
F_ApiErr() prints your client’s name and a message to the console.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiErr(StringT message);
Arguments
message
The message to print
Returns
VoidT.
Example
The following code prints the message Frame API client "myclient":
There’s been a problem with this client. when a problem occurs with
the client:
. . .
F_ApiErr("There’s been a problem with this client.\n");
. . .
160
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiExploreComponentOfProject()
F_Api Expl ore ComponentO fProject()
F_ApiExploreComponentOfProject() opens the component to show in
Windows Explorer.
Synopsis
#include “fapi.h”
. . .
VoidT F_ApiExploreComponentofProject FARGS(ConStringT
strComponentFullPath);
Arguments
strComponentFullPath
Absolute path of the component to show in
Windows Explorer.
Returns
VoidT
Example
The following code opens the component to show in Windows Explorer.
. . .
ConStringT strComponentFullPath = "C:\comp_path";
. . .
F_ApiExploreComponentofProject(strComponentFullPath);
. . .
See also
“F_ApiNewProject()” on page 335(), “F_ApiOpenProject()” on page 369,
“F_ApiSaveProject()” on page 408, “F_ApiAddLocationToProject()” on page 67,
“F_ApiDeleteComponentFromProject()” on page 142,
“F_ApiEditComponentOfProject()” on page 157,
“F_ApiRenameComponentOfProject()” on page 396
FDK Programmer’s Reference 161
3
FDK Function Reference
F_ApiExternalize()
F_ApiExternalize()
F_ApiExternalize() extracts a single graphic or all the graphics in a document that
are imported by copy to a specified folder. The graphics in the document are then set to
import by reference.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiExternalize(F_ObjHandleT docId, F_ObjHandleT objId,
StringT destFolder);
Arguments
docId
The ID of the document to search.
objId
The ID of the graphic to externalize.
To extract all graphics in a document imported by copy, set objId=0
destFolder
The folder to which the graphic is extracted.
Returns
Return 0 if all specified objects were externalized
If F_ApiExternalize() fails, the API returns n. Where n is number of objects not
externalized.
Example
The following code extracts all the images that are imported by copy to a specified
location and sets the images to import by reference:
. . .
#include "fapi.h"
F_ObjHandleT docId;
StringT destFolder;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
<todo - return type> F_ApiExternalize(docId, 0,
"c:\\ref_folder");
162
FDK Programmer’s Reference
F_ApiFamilyFonts()
...
FDK Function Reference
F_ApiFamilyFonts()
F_ApiFamilyFonts() returns the permutations of angles, variations, and weights
available for a specified font family.
..............................................................................
IMPORTANT: To return the permutations of a combined font, you must use
F_ApiCombinedFamilyFonts(). For more information, see
“F_ApiCombinedFamilyFonts()” on page 105.
..............................................................................
Synopsis
#include "fapi.h"
. . .
F_FontsT F_ApiFamilyFonts(IntT family);
Arguments
family
The index of the font family (in the list of fonts in the session)
To get the list of font families, angles, variations, or weights in the current FrameMaker
product session, use F_ApiGetStrings(). For more information, see
“F_ApiGetStrings()” on page 244.
Returns
An F_FontsT structure providing a list of the permutations of angles, variations, and
weights available for the specified font family.
F_FontsT is defined as:
typedef struct {
UIntT len; /* The number of structures referenced by val.*/
F_FontT *val; /* Structures listing the permutations. */
} F_FontsT;
F_FontT is defined as:
typedef struct {
UIntT family; /* The index of the font family name. */
UIntT variation; /* The index of the variation name. */
UIntT weight; /* The index of the weight name. */
UIntT angle; /* The index of the angle name. */
} F_FontT;
FDK Programmer’s Reference 163
3
FDK Function Reference
F_ApiFamilyFonts()
Example
The following code prints the variations, weights, and angles available for Helvetica in
the current session:
. . .
#include "futils.h"
#include "fstrings.h"
. . .
UIntT i, j;
F_StringsT families, weights, variations, angles;
F_FontsT perms;
/* Get lists of families, variations, weights, and angles. */
families = F_ApiGetStrings(0, FV_SessionId, FP_FontFamilyNames);
weights = F_ApiGetStrings(0, FV_SessionId, FP_FontWeightNames);
variations = F_ApiGetStrings(0, FV_SessionId,
FP_FontVariationNames);
angles = F_ApiGetStrings(0, FV_SessionId, FP_FontAngleNames);
/* Get the index for Helvetica. */
for (i=0; i < families.len; i++)
if(F_StrIEqual(families.val[i], "helvetica")) break;
if (i == families.len) return; /* Helvetica not found. */
/* Get the permutations and print them to the console. */
perms = F_ApiFamilyFonts(i);
for (j=0; j < perms.len; j++)
{
F_Printf(NULL, "Variation: %s, Weight: %s, Angle: %s\n",
weights.val[perms.val[j].variation],
variations.val[perms.val[j].weight],
angles.val[perms.val[j].angle]);
}
/* Free the structures and strings. */
F_ApiDeallocateFonts(&perms);
F_ApiDeallocateStrings(&families);
F_ApiDeallocateStrings(&weights);
F_ApiDeallocateStrings(&variations);
F_ApiDeallocateStrings(&angles);
. . .
164
FDK Programmer’s Reference
F_ApiFcodes()
...
FDK Function Reference
F_ApiFcodes()
F_ApiFcodes() sends an array of function codes (f-codes) to the FrameMaker
product. F-codes are hexadecimal codes that specify individual user actions, such as
cursor movement and text entry. When you use F_ApiFcodes() to send an array of
f-codes to the FrameMaker product, it executes each f-code as if the user performed the
action.
F_ApiFcodes() uses the current focus in a dialog box or a visible document. If you
want to execute a set of f-codes in a particular dialog box or document, make sure that
the dialog box or document is active (or has focus).
Synopsis
#include "fapi.h"
. . .
IntT F_ApiFcodes(IntT len,
IntT* vec);
Arguments
len
The length of the array of f-codes
vec
The array of f-codes to send to the FrameMaker product
For a complete list of f-codes, see the fcodes.h file shipped with the FDK. To use
FDK-defined f-code constants, such as KBD_RETURN, include this file in your client.
FDK Programmer’s Reference 165
3
FDK Function Reference
F_ApiFind()
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiFcodes() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
Example
The following code executes f-codes to move the cursor down one line and move the
current document window to the back:
. . .
#include "fm_commands.h"
. . .
static IntT fcodes[] = {CSR_DOWN, KBD_HIDEWIN};
F_ApiFcodes(sizeof(fcodes)/sizeof(IntT), fcodes);
. . .
F_ApiFind()
F_ApiFind() performs the same actions as using the Find dialog box to search a
document for text or other types of content.
Synopsis
#include "fapi.h"
. . .
F_TextRangeT F_ApiFind(F_ObjHandleT docId,
const F_TextLocT *textLocp,
const F_PropValsT *findParamsp);
Arguments
docId
The ID of the document to search.
textLocp
The text location to begin searching from.
findParamsp
A property list that specifies what to search for.
The findParamsp parameter points to a property list that contains:
166
FDK Programmer’s Reference
F_ApiFind()
...
FDK Function Reference

FS_FindCustomizationFlags, an optional property you can use to customize
the search.

One of a list of a list of properties that specify what type of content to search for; text,
elements, character formats, etc. You must specify one of these properties.
The properties you can assign to findParamsp are:
Property
Meaning and possible values
FS_FindCustomizationFlags
An optional parameter of type FT_Integer that may
be any of the following bit flags OR’ed together:
FF_FIND_CONSIDER_CASE,
FF_FIND_WHOLE_WORD,
FF_FIND_USE_WILDCARDS,
FF_FIND_BACKWARDS
If no customization flags are specified the default is to
search forward, to not use wildcards, to not consider
case, and to not use whole words.
FS_FindWrap
A BoolT flag that determines whether the find
operation will wrap when it reaches the location
where the search began. Default is True; the find
operations wraps.
If False, after reaching the location where the search
began, the find operation returns an empty
F_TextRangeT and FA_errno is set to
FE_NotFound.
FS_FindText
FT_String search text
FS_FindElementTag
FT_Strings as follows:
propVal.u.ssval.len =
FV_NumFindElementItems;
propVal.u.ssval.val[FV_FindElemTag
] = [an_element_tag];
propVal.u.ssval.val[FV_FindAttrNam
e]= [an_attribute_name];
propVal.u.ssval.val[FV_FindAttrVal
ue] = [an_attribute_value];
All of the strings must be present, but any or all may
be empty
FDK Programmer’s Reference 167
3
FDK Function Reference
F_ApiFind()
Property
FS_FindCharFmt
Meaning and possible values
No associated propertya. One or more of the
following additional properties should be specified to
tailor the search
FP_FontFamily
FP_CombinedFont
FP_FontSize
FP_FontAngle
FP_FontWeight
FP_FontVariation
FP_Color
FP_Spread
FP_Stretch
FP_Language
FP_Underline
FP_Overline
FP_Strikethrough
FP_ChangeBar
FP_Capitalization
FP_Position
FP_Tsumeb
168
FS_FindPgfTag
FT_String paragraph tag
FS_FindCharTag
FT_String character tag
FS_FindTableTag
FT_String table tag
FS_FindObject
FV_FindAnyMarker
FV_FindAnyXRef
FV_FindUnresolvedXRef
FV_FindAnyTextInset
FV_FindUnresolvedTextInset
FV_FindAnyPub
FV_FindAnyVariable
FV_FindAnchoredFrame
FV_FindFootnote
FV_FindAnyTable
FV_FindAutomaticHyphen
FV_FindAnyRubi
FS_FindMarkerOfType
FT_String marker type
FS_FindMarkerText
FT_String marker text
FS_FindXRefWithFormat
FT_String format
FS_FindNamedVariable
FT_String variable name
FDK Programmer’s Reference
F_ApiFind()
Property
Meaning and possible values
FS_FindCondTextInCondTags
FT_Strings condition tags
FS_FindCondTextNotInCond
Tags
FT_Strings condition tag
...
FDK Function Reference
a. Actually including a FS_FindCharFmt property is not required; when
FrameMaker sees one of the text properties it assumes the client is
searching for a character format.
b. See the FDK Programmer’s Reference for a description of these properties
and their values.
Whenever this function finds something that corresponds to a text range (a word, object
anchor, marker, etc.), it returns an F_TextRangeT structure for that range. However,
when searching for structure elements, you can find elements that have no
corresponding text range.
Structure elements for the following table parts have no corresponding text range:

Table title

Table head

Table foot

Table body

Table row

Table cell
When you find a structure element for one of these objects, F_ApiFind() returns an
empty F_TextRangeT structure and FA_errno is set to FE_Success. In this case,
you can get the document’s FP_ElementSelection property to return a
corresponding F_ElementRangeT structure for the table part structure element.
Returns
When it finds anything other than structure elements for table parts, an F_TextRangeT
structure. When it finds structure elements for table parts, an empty F_TextRangeT
structure, and FA_errno is set to FE_Success.
FDK Programmer’s Reference 169
3
FDK Function Reference
F_ApiFind()
If F_ApiFind() fails, an empty text range is returned and FA_errno is set to one of
the following values.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadParameter
findParamsp was empty or a parameter was
improperly specified
170
FE_BadInsertPos
The textLocp was not valid
FE_NotTextObject
The textLocp was not a text location
FDK Programmer’s Reference
F_ApiFind()
...
FDK Function Reference
Example
The following code searches the specified document from the beginning of the current
selection for the first occurrence of a text string:
. . .
F_ObjHandleT docId;
F_PropValsT findParams;
F_TextRangeT trSel, trFound;
StringT searchString = (StringT)"findme";
/* Assuming a document has been attached to a window... */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
if (docId == 0)
return;
/* Set ‘trSel’ to the text range of the selection */
trSel = F_ApiGetTextRange(FV_SessionId, docId,
FP_TextSelection);
if (trSel.beg.objId == 0 && trSel.end.objId == 0)
return;
/* Allocate and initialize ‘findParams’ */
findParams = F_ApiAllocatePropVals(1);
findParams.val[0].propIdent.num = FS_FindText;
findParams.val[0].propVal.valType = FT_String;
findParams.val[0].propVal.u.sval =
F_StrCopyString(searchString);
/* Perform the text string search */
trFound = F_ApiFind(docId, &trSel.beg, &findParams);
/* Free the F_PropValsT structures */
F_ApiDeallocatePropVals(&findParams);
. . .
FDK Programmer’s Reference 171
3
172
FDK Function Reference
F_ApiFind()
FDK Programmer’s Reference
F_ApiGetAllKeyDefinitions()
3
...
FDK Function Reference
FDK Function Reference
F_ApiGetAllKeyDefinition s()
F_ApiGetAllKeyDefinitions() gets all the key definitions from the specified key
catalog.
Synopsis
#include "fapi.h"
. . .
F_TypedValsT F_ApiGetAllKeyDefinitions(F_ObjHandleT
keyCatalogId, IntT filterType)
Arguments
keyCatalogId
The ID of the Key Catalog to get the key definitons from.
filterType
Specifies the kind of key fields to get for each key definition.
flterType can have the following values:

FV_KeyDefFieldsTypePrimary:
Get only the primary key fields (Tag, Target, SrcFile, and
Duplicate)

FV_KeyDefFieldsTypeAll:
Get all key fields.
Returns
Returns the information in a F_TypedValsT structure as follows: FieldTag is of type
FT_Integer. FieldValue is of type as specified in the table below. .
FieldTag value
FieldValue type
FV_KeydefKeyAttrs
FT_AttributesEx
FV_KeydefKeyDefaultText
FT_String
FV_KeydefKeyDuplicate
FT_Integer
FV_KeydefKeyFoundInRefFile FT_Integer
FV_KeydefKeyInValid
FT_Integer
FV_KeydefKeySrcFile
FT_String
FV_KeydefKeySrcType
FT_Integer
FV_KeydefKeyTag
FT_String
FDK Programmer’s Reference 173
3
FDK Function Reference
F_ApiGetAllKeyDefinitions()
FieldTag value
FieldValue type
FV_KeydefKeyTarget
FT_String
FV_KeydefKeyVarList
FT_Vals
If F_ApiGetAllKeyDefinitions() fails, the API assigns one of the following
values to FA_errno.
Stru cture d
FA_errno value
Meaning
FE_BadObjId
The ID provided does not specify a Key Catalog.
FE_KeyCatalogNotLoaded
The Key Catalog provided is currently not loaded.
FE_KeyCatalogIsStale
The Key Catalog provided is currently marked as stale
and needs to be re-loaded before using.
FE_BadFilterType
The filter type provided is not valid.
F _ A p i G et A t t r i b u t eD ef s ( )
F_ApiGetAttributeDefs() gets an element definition’s attribute definitions.
Synopsis
#include "fapi.h"
. . .
F_AttributeDefsT F_ApiGetAttributeDefs(
F_ObjHandleT docId,
F_ObjHandleT elemDefId);
Arguments
docId
The ID of the document or book containing the element definition
elemDefId
The ID of the element definition for which to get attribute definitions
Returns
An F_AttributeDefsT structure specifying the attribute definitions. The
F_AttributeDefsT structure is defined as:
typedef struct {
UIntT len;
F_AttributeDefT *val;
} F_AttributeDefsT;
174
FDK Programmer’s Reference
F_ApiGetAllKeyDefinitions()
...
FDK Function Reference
The F_AttributeDefT structure describes an attribute definition. It is defined as:
typedef struct {
StringT name; /* The attribute name. */
BoolT required; /* True if the attribute is required. */
BoolT readOnly; /* True if the attribute is read only. */
IntT attrType; /* The attribute type. See following table. */
F_StringsT choices;/* Choices if attrType is FV_AT_CHOICES.*/
F_StringsT defValues;/* The default if the attribute is not
** required. If attrType is
** FV_AT_REALS, FV_AT_STRINGS, etc,
** the default can have multiple strings.
*/
StringT rangeMin; /* The minimum allowed value (if any). */
StringT rangeMax; /* The maximum allowed value (if any). */
} F_AttributeDefT;
The F_AttributeDefT.attrType field identifies the attribute value’s type. It can
specify one of the following constants.
attrType constant
Attribute value type
FV_AT_STRING
Any arbitrary text string
FV_AT_STRINGS
One or more arbitrary text strings
FV_AT_CHOICES
A value from a list of choices
FV_AT_INTEGER
A signed whole number (optionally restricted to a range of
values)
FV_AT_INTEGERS
One or more integers (optionally restricted to a range of
values)
FV_AT_REAL
A real number (optionally restricted to a range of values)
FV_AT_REALS
One or more real numbers (optionally restricted to a range of
values)
FV_AT_UNIQUE_ID
A string that uniquely identifies the element
FV_AT_UNIQUE_IDREF
A reference to a UniqueID attribute
FV_AT_UNIQUE_IDREFS
One or more references to UniqueID attributes
FDK Programmer’s Reference 175
3
FDK Function Reference
F_ApiGetAllKeyDefinitions()
If F_ApiGetAttributeDefs() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_WrongProduct
The current FrameMaker product doesn’t support the
requested operation.
FE_BadObjId
Invalid object ID
Example
The following code gets the attribute definitions from the Chapter element definition
and prints the names of the required attributes:
. . .
F_ObjHandleT docId, edefId;
F_AttributeDefsT attributeDefs;
UIntT i;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
edefId = F_ApiGetNamedObject(docId, FO_ElementDef, "Chapter");
attributeDefs = F_ApiGetAttributeDefs(docId, edefId);
for(i=0; i<attributeDefs.len; i++)
{
if(attributeDefs.val[i].required)
F_Printf(NULL, "%s is a required attribute.\n",
attributeDefs.val[i].name);
}
. . .
See also
F_ApiSetAttributeDefs().
Stru cture d
F _ A p i G et A t t r i b u t es ( )
F_ApiGetAttributes() gets an element’s attributes.
176
FDK Programmer’s Reference
F_ApiGetAllKeyDefinitions()
...
FDK Function Reference
Synopsis
#include "fapi.h"
. . .
F_AttributesT F_ApiGetAttributes(
F_ObjHandleT docId,
F_ObjHandleT elemId);
Arguments
docId
The ID of the document or book containing the element
elemId
The ID of the element for which to get attributes
Returns
An F_AttributesT structure specifying the attributes. The F_AttributesT
structure is defined as:
typedef struct {
UIntT len;
F_AttributeT *val;
} F_AttributesT;
The F_AttributeT structure describes an attribute. It is defined as:
typedef struct {
StringT name; /* The attribute name. */
F_StringsT values; /* The attribute values. */
UByteT valflags; /* Validation error flags (read-only). */
UByteT allow; /* Allow error as special case to suppress
** reporting by validation */
} F_AttributeT;
The F_AttributesT structure returned by F_ApiGetAttributeDefs()
includes the attributes (F_AttributeT structures) in the following order:

Attributes defined in the element definition in the same order in which they are
defined in the element definition

Undefined attributes in random order
If an element does not have attributes, the len field of the F_AttributesT
structure is set to 0 and the val field is set to NULL.
FDK Programmer’s Reference 177
3
FDK Function Reference
F_ApiGetAllKeyDefinitions()
You can query the valflags field of an F_AttributeT structure to determine whether the
attribute is valid, or what validation errors it might have. The validation error flags are
as follows:
valflags flag
Meaning
FV_AV_REQUIRED
This attribute is required, but it has no value assigned to it
FV_INVALID_CHOICE
At least one value for the attribute is not one of the allowed
choices
FV_INVALID_FORMAT
The attribute value is the wrong type for the attribute
FV_AV_IDREF_UNRES
OLVED
The attribute refers to an undefined ID value
FV_AV_ID_DUPLICAT
E_IN_DOC
The attribute value should be unique, but is not unique within the
document
FV_AV_TOO_MANY_TO
KENS
The attribute value has more than one token, but the attribute
definition only allows one token
FV_AV_UNDEFINED
The attribute is not defined for the containing element
FV_AV_OUT_OF_RANG
E
The attribute value is out of the range specified in the attribute
definition
If F_ApiGetAttributes() fails, the API assigns one of the following values to
FA_errno.
178
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_WrongProduct
The current FrameMaker product doesn’t support the
requested operation.
FE_BadObjId
Invalid object ID
FDK Programmer’s Reference
F_ApiGetAllKeyDefinitions()
...
FDK Function Reference
Example
The following code gets the attributes from the selected element and prints their names:
. . .
F_ObjHandleT docId;
F_AttributesT attributes;
F_ElementRangeT er;
UIntT i;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
er = F_ApiGetElementRange(FV_SessionId,
docId, FP_ElementSelection);
attributes = F_ApiGetAttributes(docId, er.beg.childId);
for(i=0; i<attributes.len; i++)
{
F_Printf(NULL, "Attribute %d: %s.\n", i,
attributes.val[i].name);
}
. . .
See also
F_ApiSetAttributes().
Stru cture d
F _ A p i G et E l e me n t C a tal o g ()
F_ApiGetElementCatalog() gets the list of current valid elements at the insertion
point by querying a document’s FP_ElementCatalog property.
The list matches the list displayed in the Element Catalog on the user’s screen. Its
contents depend on the value of the current document’s
FP_ElementCatalogDisplay property. For example, if the document’s
FP_ElementCatalogDisplay property is set to FV_ELCAT_CHILDREN, the list
returned by F_ApiGetElementCatalog() contains children allowed anywhere in
the current parent element.
Synopsis
#include "fapi.h"
. . .
F_ElementCatalogEntriesT F_ApiGetElementCatalog(
F_ObjHandleT docId);
FDK Programmer’s Reference 179
3
FDK Function Reference
F_ApiGetAllKeyDefinitions()
Arguments
docId
The ID of the document whose Element Catalog you want to query
Returns
An F_ElementCatalogEntriesT structure.
The F_ElementCatalogEntriesT structure is defined as:
typedef struct {
UIntT len;
F_ElementCatalogEntryT *val;
} F_ElementCatalogEntriesT;
The F_ElementCatalogEntryT structure describes an individual catalog entry in a
Structured FrameMaker element catalog. It is defined as:
typedef struct {
F_ObjHandleT objId; /* ID of element definition. */
IntT flags; /* Validation type. */
} F_ElementCatalogEntryT;
The F_ElementCatalogEntryT.flags field can specify one of the following
constants.
flags constant
Meaning
FV_STRICTLY_VALID
Catalog entry is strictly valid
FV_LOOSELY_VALID
Catalog entry is loosely valid
FV_ALTERNATIVE
Catalog entry is an alternative
FV_INCLUSION
Catalog entry is valid because it is an inclusion
If no flags are set, the element is invalid at the current position.
If F_ApiGetElementCatalog() fails, the API assigns one of the following values
to FA_errno.
180
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_WrongProduct
The current FrameMaker product doesn’t support the requested
operation.
FDK Programmer’s Reference
F_ApiGetAllKeyDefinitions()
...
FDK Function Reference
Example
The following code gets the list of current valid elements at the insertion point in the
active document:
. . .
F_ObjHandleT docId;
F_ElementCatalogEntriesT validEntries;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
validEntries = F_ApiGetElementCatalog(docId);
. . .
Stru cture d
F _ A p i G et E l e me n t R a n g e ()
F_ApiGetElementRange() gets an element range (F_ElementRangeT)
property.
Synopsis
#include "fapi.h"
. . .
F_ElementRangeT F_ApiGetElementRange(
F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
Arguments
docId
The ID of the document, book, or session containing the object whose
property you want to query. If the object is a session, specify
FV_SessionId.
objId
The ID of the object whose property you want to query.
propNum
The property to query. Specify an API-defined constant, such as
FP_ElementSelection.
Returns
An F_ElementRangeT structure specifying the element range. The
F_ElementRangeT structure is defined as:
typedef struct {
F_ElementLocT beg; /* Beginning of the element range. */
F_ElementLocT end; /* End of the element range. */
} F_ElementRangeT;
FDK Programmer’s Reference 181
3
FDK Function Reference
F_ApiGetAllKeyDefinitions()
The F_ElementLocT structure specifies a location within an element. It is defined as:
typedef struct {
F_ObjHandleT parentId; /* Parent element ID. */
F_ObjHandleT childId; /* Child element ID. */
IntT offset; /* Offset within child/parent element. */
} F_ElementLocT;
If the selection includes the root element, beg.parentId is 0, beg.childId is
the ID of the root element, and end.childId is 0.
If F_ApiGetElementRange() fails, the API assigns one of the following values to
FA_errno.
182
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_WrongProduct
The current FrameMaker product doesn’t support the requested
operation.
FE_BadObjId
Invalid object ID
FDK Programmer’s Reference
F_ApiGetAllKeys()
...
FDK Function Reference
Example
The following code prints the names of the selected elements and the offsets of the
selection within the elements:
. . .
F_ObjHandleT docId;
F_ElementRangeT er;
StringT edefName;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
er = F_ApiGetElementRange(FV_SessionId,
docId, FP_ElementSelection);
edefName = F_ApiGetString(docId, F_ApiGetId(docId,
er.beg.parentId, FP_ElementDef), FP_Name);
F_Printf(NULL, "Beginning parent element tag: %s\n", edefName);
F_Free(edefName);
edefName = F_ApiGetString(docId, F_ApiGetId(docId,
er.beg.childId, FP_ElementDef), FP_Name);
F_Printf(NULL, "Beginning child element tag: %s\n", edefName);
F_Free(edefName);
F_Printf(NULL, "Beginning offset: %d\n", er.beg.offset);
edefName = F_ApiGetString(docId, F_ApiGetId(docId,
er.end.parentId, FP_ElementDef), FP_Name);
F_Printf(NULL, "End parent element tag: %s\n", edefName);
F_Free(edefName);
edefName = F_ApiGetString(docId, F_ApiGetId(docId,
er.end.childId, FP_ElementDef), FP_Name);
F_Printf(NULL, "End child element tag: %s\n", edefName);
F_Free(edefName);
F_Printf(NULL, "End.offset: %d\n", er.end.offset);
. . .
See also
F_ApiSetElementRange().
F_ApiGetAllKeys()
Gets all the key tags from the specified key catalog.
FDK Programmer’s Reference 183
3
FDK Function Reference
F_ApiGetAllKeys()
Synopsis
#include "fencode.h"
. . .
F_StringsT F_ApiGetAllKeys(F_ObjHandleT keyCatalogId)
Arguments
keyCatalogId
The ID of the Key Catalog from which to get all key tags.
Returns
Returns the list of key tags as F_StringsT. The returned list does not contain duplicate
tags.
If F_ApiGetAllKeys() fails, the API assigns one of the following values to
FA_errno.
184
FA_errno value
Meaning
FE_BadObjId
The ID provided does not specify a Key Catalog.
FE_KeyCatalogNotLoaded
The Key Catalog provided is currently not loaded.
FE_KeyCatalogIsStale
The Key Catalog provided is currently marked as stale
and needs to be re-loaded before using.
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetConditionalExpression()
F_ApiGetConditionalExpression()
F_ApiGetConditionalExpression() returns the PropVals object containing the
conditional settings of the current book.
Synopsis
#include "fapi.h"
. . .
StringT F_ApiGetConditionalSettings( );
Returns
A property list (an F_PropValsT data structure) with the current conditional text
settings.
FDK Programmer’s Reference 185
3
FDK Function Reference
F_ApiGetConditionalSettings ()
F_ApiGetConditionalSettings ()
F_ApiGetConditionalSettings() returns the expression for the given
conditional tag.
Synopsis
#include "fapi.h"
. . .
StringT F_ApiGetConditionalExpression (F_ObjHandleT bookId,
StringT exprName);
Returns
String.
F_ApiGetDialogInitialRect()
F_ApiGetDialogInitialRect() gets the initial rectangle values for any client
dialog or pod.
Synopsis
#include "fapi.h"
. . .
F_RectT F_ApiGetDialogInitialRect (F_ObjHandleT dlgId);
. . .
Arguments
F_ObjHandleT dlgId
The ID of the dialog resource whose dimensions have to be
retrieved.
Returns
FRectT
Example
An F_RectT data structure, containing the MetricT values. The MetricT contains
the x and y coordinates and width (w) and height (h) of a pod.
186
FDK Programmer’s Reference
F_ApiGetDialogInitialRect()
...
FDK Function Reference
typedef struct F_RectT
{
MetricT x;
MetricT y;
MetricT w;
MetricT h;
} F_RectT;
F_RectT rect = F_ApiGetDialogInitialRect(dlgId);
FDK Programmer’s Reference 187
3
FDK Function Reference
F_ApiGetEncodingForFamily()
F_ApiGetEncodingForFamily()
F_ApiGetEncodingForFamily() returns the encoding the FrameMaker product
uses for the font family.
Note that to get the list of font families, angles, variations, or weights in the current
FrameMaker product session, you use F_ApiGetStrings(). For more information,
see F_ApiGetStrings().
Synopsis
#include "fencode.h"
. . .
StringT F_ApiGetEncodingForFamily(IntT family);
Arguments
family
The font family for which you want to know the encoding
Returns
The following strings which indicate encoding for text fonts:
Value
Means
FrameRoman
Roman text
JISX0208.ShiftJIS
Japanese text
BIG5
Traditional Chinese text
GB2312-80.EUC
Simplified Chinese text
KSC5601-1992
Korean text
Multiple
More than one encoding for the font family
If the returned string is Multiple, the font family includes variations that are represented
by different encodings. In that case, you should use F_ApiFamilyFonts() to get a
list of the variations for the family. Then you can use
F_ApiGetEncodingForFont() to get the encoding for a specific variation.
Non-text fonts may return FrameRoman, or they may return the font family name. For
example, on some platforms the encoding for the Symbol font family is indicated by the
string Symbol.
188
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetEncodingForFamily()
Example
The following code gets the index for the Minchu font family from the session list of
font families. It then gets the encoding for that font family:
. . .
#include "futils.h"
#include "fstrings.h"
#include "fencode.h"
. . .
F_StringsT families;
StringT encoding;
UIntT i;
/* First get the list of font families for the session */
families = F_ApiGetStrings(0, FV_SessionId, FP_FontFamilyNames);
/* Now get the index of the Minchu family */
for (i=0; i < families.len; i++)
if (F_StrIEqual(families.val[i], (StringT) "minchu")) break;
if (i == families.len) return; /* Minchu not found */
/* Now use the index to get the encoding for Minchu */
encoding = F_ApiGetEncodingForFamily(i);
/* Free the strings */
F_ApiDeallocateStrings(&families);
F_ApiDeallocateString(&encoding);
FDK Programmer’s Reference 189
3
FDK Function Reference
F_ApiGetEncodingForFont()
F_ApiGetEncodingForFont()
F_ApiGetEncodingForFont() returns the encoding the FrameMaker product uses
for a specific font with a specific combination of weight, angle, and variation.
Note that to get the permutations of weights, angles, and variations for a font, use
F_ApiFamilyFonts(). Then loop through the list to get an instance with a specific
combination of these values. For more information, see F_ApiFamilyFonts().
Synopsis
#include "fencode.h"
. . .
StringT F_ApiGetEncodingForFont(F_FontT *font);
Arguments
font
Pointer to an individual font with a specific combination of weight, angle, and
variation
Returns
The following strings which indicate the encoding for text fonts:
Value
Means
FrameRoman
Roman text
JISX0208.ShiftJIS
Japanese text
BIG5
Traditional Chinese text
GB2312-80.EUC
Simplified Chinese text
KSC5601-1992
Korean text
Non-text fonts may return Roman, or they may return the font family name. For
example, on some platforms the encoding for a permutation of the Symbol font family
is indicated by the string Symbol.
190
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetEncodingForFont()
Example
The following code gets the index for the Minchu font family from the session list of
font families. If the encoding is Multiple, it loops through the permutations of Minchu
and prints the encoding for each to the console. If the encoding is not Multiple, it prints
out the encoding for Minchu.
. . .
#include "futils.h"
#include "fstrings.h"
#include "fencode.h"
. . .
F_FontsT fam;
F_StringsT families, weights, variations, angles;
StringT encoding;
UIntT i, j;
/* Get lists of families, variations, weights, and angles. */
families = F_ApiGetStrings(0, FV_SessionId, FP_FontFamilyNames);
weights = F_ApiGetStrings(0, FV_SessionId, FP_FontWeightNames);
variations = F_ApiGetStrings(0, FV_SessionId,
FP_FontVariationNames);
angles = F_ApiGetStrings(0, FV_SessionId,FP_FontAngleNames);
/* Get the index for Minchu */
for (i=0; i < families.len; i++)
if (F_StrIEqual(families.val[i], (StringT) "minchu")) break;
if (i == families.len) return; /* Minchu not found */
/* Now get the encoding for Minchu... If multiple, print */
/* the encoding for each variation to the console */
encoding = F_ApiGetEncodingForFamily(i);
if (F_StrIEqual(encoding, (StringT) "multiple")) {
fam = F_ApiFamilyFonts(i);
for (j = 0; j < fam.len; j++) {
F_ApiDeallocateString(&encoding);
encoding = F_ApiGetEncodingForFont(fam.val[j]);
F_Printf(NULL, "The encoding for %s-%s-%s-%s is %s\n"
FDK Programmer’s Reference 191
3
FDK Function Reference
F_ApiGetId()
families.val[fam.val[j].family],
weights.val[fam.val[j].weight],
variations.val[fam.val[j].variation],
angles.val[fam.val[j].angle],
encoding);
}
/* Free the F_FontsT structure. */
F_ApiDeallocateFonts(&fam);
}
else F_Printf(NULL, "The encoding for Minchu is %s\n" encoding);
/* Free the structures and strings */
F_ApiDeallocateStrings(&families);
F_ApiDeallocateStrings(&weights);
F_ApiDeallocateStrings(&variations);
F_ApiDeallocateStrings(&angles);
F_ApiDeallocateString(&encoding);
F_ApiGetId()
F_ApiGetId() queries an ID (F_ObjHandleT) property.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiGetId(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
192
FDK Programmer’s Reference
F_ApiGetId()
...
FDK Function Reference
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to query. If the object is a session, specify FV_SessionId.
objId
The ID of the object whose property you want to query.
propNum
The property to query. Specify an API-defined constant, such as
FP_ActiveDoc.
Returns
The ID specified by the property. If the property doesn’t specify an ID or an error
occurs, F_ApiGetId() returns 0.
..............................................................................
IMPORTANT: If F_ApiGetId() returns 0, it may not indicate an error, because
some ID property values can be 0. To determine if a returned 0 is a property value or
an error, check FA_errno.
..............................................................................
If F_ApiGetId() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference 193
3
FDK Function Reference
F_ApiGetImportDefaultParams()
Example
The following code displays the color of the active document’s change bars:
. . .
#include "futils.h"
F_ObjHandleT docId, colorId;
UCharT msg[256];
StringT color;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
/* Get the ID of the document’s change bar color. */
colorId = F_ApiGetId(FV_SessionId,
docId, FP_ChangeBarColor);
/* Get the color’s name and display it. */
color = F_ApiGetString(docId, colorId, FP_Name);
F_Sprintf(msg, "The document’s change bar color is %s.",color);
F_ApiAlert(msg, FF_ALERT_CONTINUE_NOTE);
F_Free(color);
. . .
See also
F_ApiGetNamedObject() and F_ApiSetId().
F_ApiGetImportDefaultParams( )
F_ApiGetImportDefaultParams() gets a default property list that you can use to
call F_ApiImport().
Synopsis
#include "fapi.h"
. . .
F_PropValsT F_ApiGetImportDefaultParams();
Arguments
None.
194
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetImportDefaultParams()
Returns
A property list (an F_PropValsT data structure) with the properties shown in the
following tables. The first value listed by each property is the value that
F_ApiGetImportDefaultParams() assigns to the property. The other values are
values you can set the property to.
The property list contains all the properties shown in these tables. However,
F_ApiImport() uses some of the properties only for certain types of import
operations. For example, it uses the FS_UseMainFlow property only if you are
importing a Frame document or MIF file; it ignores this property if you are importing a
text file or a graphic.
F_ApiImport() uses the following properties for all import operations.
Property
Instruction or situation and possible values
FS_AlertUserAboutFailure
Alert user if an unexpected condition, such as an
unrecognized file type, occurs.
False: don’t notify user when unexpected conditions
occur.
True: notify user when unexpected
conditions occur.
FS_DisallowDoc
Disallow Frame binary documents.
False: allow them to be imported.
True: don’t allow them to be imported.
FS_DisallowFilterTypes
Disallow filterable files.
False: allow them to be imported.
True: don’t allow them to be imported.
FS_DisallowMIF
Disallow MIF files.
False: allow them to be imported.
True: don’t allow them to be imported.
FS_DisallowGraphicTypes
Disallow graphic files.
False: allow them to be imported.
True: don’t allow them to be imported.
FS_DisallowPlainText
Disallow Text Only files.
False: allow them to be imported.
True: don’t allow them to be imported.
FDK Programmer’s Reference 195
3
FDK Function Reference
F_ApiGetImportDefaultParams()
Property
Instruction or situation and possible values
FS_DisallowSgml
Disallow SGML documents.
False: allow them to be imported.
True: don’t allow them to be imported.
FS_DisallowXML
Disallow XML documents.
False: allow them to be imported.
True: don’t allow them to be imported.
FS_DitaMaxRefLevels
The number of reference levels to be opened while
opening a DITA file.
FV_LEVELS_ALL: Open references at all levels.
FV_LEVELS_DEFAULT: Open references till the
level specified in the ditafm.ini file.
FS_DoNotLockFile
While opening the file, specify whether to lock the file
or not.
False: allow the file to be locked.
True: don’t allow the file to be locked.
FS_DontNotifyAPIClients
Notify other clients of the import operation.
True: don’t notify them.
False: notify them.
FS_FileTypeHint
If the file is filterable, a string that enables the
FrameMaker product to automatically call the correct
filter to filter it. For information on the syntax of this
string, see Syntax of FP_ImportHint strings and
Syntax of FP_ImportHint strings.
NULL.
FS_FileIsSgmlDoc
File is an SGML document.
FV_DoOK: import it anyway.
FV_DoCancel: cancel import operation.
FV_DoShowDialog: show dialog box and let user
decide.
196
FDK Programmer’s Reference
Property
Instruction or situation and possible values
FS_FileIsXMLDoc
File is an XML document.
...
FDK Function Reference
F_ApiGetImportDefaultParams()
FV_DoOK: import it anyway.
FV_DoCancel: cancel import operation.
FV_DoShowDialog: show dialog box and let user
decide.
FS_ForceImportAsText
Import file as a Text Only document, even if it is a MIF
file or a filterable file.a
False: import it in a format based on its type
True: import it as Text Only.
FS_HowToImport
Import file by reference or copy.
FV_DoByRef: import file by reference.
FV_DoByCopy: import file by copy.
FV_DoUserChoice: allow user to choose how to
import the file.
FS_ImportAsType
Specify the format of the file to import.
FV_AUTORECOGNIZE: Default value; recognize the
file type aoutmatically.
FV_TYPE_BINARY: A FrameMaker binary file.
FV_TYPE_FILTER: Use a filter to import this file.
You must specify a valid file type hint for
FS_FileTypeHint.
FV_TYFE_MIF
FV_TYPE_TEXT
FV_TYPE_SGML
FV_TYPE_XML
FS_InsetData
Used as an import parameter in import script. The
value of this parameter is used as INSETInfo
Default: 0
FS_NumImportParams
The available number of properties in the import script
that the user can set
FS_NumImportReturnParams
The available number of properties in the
import-return script that the user can set
FDK Programmer’s Reference 197
3
FDK Function Reference
F_ApiGetImportDefaultParams()
Property
Instruction or situation and possible values
FS_ManualUpdate
Update inset manually.
False: don’t update inset manually.
True: update inset manually.
FS_SgmlImportApplication
Retained for compatibility. Use
FS_StructuredImportApplication
FS_ShowBrowser
Display Import dialog box.
False: don’t display it.
True: display it.
FS_TextInsetName
Inset name.
NULL.
a. Some file types, such as Frame binary files, can’t be imported as text.
F_ApiImport() uses the following properties only for importing FrameMaker
product documents and MIF files.
Property
Instruction or situation and possible values
FS_FileIsMakerDoc
File is a Frame binary document or a MIF file
FV_DoOK: import it anyway
FV_DoCancel: cancel import operation
FV_DoShowDialog: show dialog box and let user
decide
FS_FormatImportedText
Format the imported text
FV_EnclosingDoc: use formatting in the enclosing
document
FV_PlainText: format the imported text as plain
text
FV_SourceDoc: use formatting from the source
document
FS_ImportFlowPageSpace
If FS_UseMainFlow is False, the type of pages to
search for the flow specified by
FS_ImportFlowTag
FV_BodyPage: search body pages
FV_ReferencePage: search reference pages
198
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetImportDefaultParams()
Property
Instruction or situation and possible values
FS_ImportFlowTag
If FS_UseMainFlow is False, the name of the
flow to import
NULL
FS_RemoveManualPageBreaks
Remove manual page breaks if
FS_FormatImportedTest is set to
FV_EnclosingDoc
True: remove manual page breaks
False: don’t remove manual page breaks
FS_RemoveOverrides
Remove format overrides if
FS_FormatImportedTest is set to
FV_EnclosingDoc
True: remove format overrides
False: don’t remove format overrides
FS_UseMainFlow
Import text from specified document’s
main flow
True: import the text from the main flow
False: don’t import the text from the main flow
F_ApiImport() uses the following properties only for importing
graphics files.
Property
Instruction or situation and possible values
FS_FileIsGraphic
File is a graphic file
FV_DoOK: import it
FV_DoCancel: cancel import operation
FV_DoShowDialog: display dialog box and let
user decide
FS_FitGraphicInSelectedRect
Fit the graphic in the selected graphic frame
True: fit the graphic in the frame
False: don’t fit the graphic in the frame
FDK Programmer’s Reference 199
3
FDK Function Reference
F_ApiGetImportDefaultParams()
Property
Instruction or situation and possible values
FS_GraphicDpi
Dots per inch (DPI) at which to import the graphic
72
The page number to be imported from a PDF file.
Used when you want to import a specific page of a
PDF file.
FS_PDFPageNum
F_ApiImport() uses the following properties only for importing
ASCII text files.
Property
Instruction or situation and possible values
FS_CellSeparator
If FS_FileIsText is FV_DoImportAsTable,
the delimiter or separator used to parse the text into
cells
NULL
FS_FileIsText
File is a Text Only file
FV_TextFile_EOLisEOP: import it and convert
each end-of-line into a paragraph break
FV_TextFile_EOLisNotEOP: import it but don’t
convert each end-of-line into a
paragraph break
FV_DoImportAsTable: import it into a table.
FV_DoCancel: cancel Import operation
FS_ImportTblTag
If FS_FileIsText is FV_DoImportAsTable,
the table format to use
NULL
FS_LeaveHeadingRowsEmpty
If FS_FileIsText is FV_DoImportAsTable,
leave heading rows empty
False: don’t leave heading rows empty
True: leave heading rows empty
FS_NumCellSeparators
If FS_FileIsText is FV_DoImportAsTable,
and FS_CellSeparator is set to a space (' '), the
number of spaces to use as a separator
1
200
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetImportDefaultParams()
Property
Instruction or situation and possible values
FS_NumColumns
If FS_FileIsText is FV_DoImportAsTable,
and FS_TreatParaAsRow is False, the number
of columns in the table
1
FS_TblNumHeadingRows
If FS_FileIsText is FV_DoImportAsTable,
the number of heading rows in the table
1
FS_TreatParaAsRow
If FS_FileIsText is FV_DoImportAsTable,
convert each line in the text file into a row of table
cells and use FS_CellSeparator and
FS_NumCellSeparators to determine how to
divide the line into separate cells
True: convert each line into a row of table cells
False: convert each line into a table cell instead
When you import text into a table, in addition to setting FS_FileIsText to
FV_DoImportAsTable, you must specify a value for the FS_ImportTblTag
property. If you set the property FS_TreatParaAsRow to True, you must also
specify a value for the FS_CellSeparator property.
The property list returned by F_ApiGetImportDefaultParams() does not
specify values for the FS_ImportTblTag and FS_CellSeparator properties. If
you use the property list to import a table and do not specify a value for
FS_ImportTblTag, F_ApiImport() fails and sets FA_errno to
FE_BadParameter. If you set FS_TreatParaAsRow to True and do not specify
a cell separator by setting FS_CellSeparator, F_ApiImport() fails and sets
FA_errno to FE_BadParameter.
If F_ApiGetImportDefaultParams() fails, the API sets the len field of the
returned F_PropValsT data structure to 0.
After you are done with the property list returned by
F_ApiGetImportDefaultParams(), use F_ApiDeallocatePropVals() to
deallocate it.
FDK Programmer’s Reference 201
3
FDK Function Reference
F_ApiGetInt()
Example
The following code gets a default Import script with
F_ApiGetImportDefaultParams(). It modifies the script to disallow Frame
binary, graphic, and MIF files. It then uses the script to call F_ApiImport().
. . .
F_PropValsT params, *returnParamsp = NULL;
F_ObjHandleT docId;
F_TextRangeT tr;
IntT i;
/* Get default import list. Return if it can’t be allocated. */
params = F_ApiGetImportDefaultParams();
/* Get current insertion point. Return if there isn’t one. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(0, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
/* Change properties to disallow Frame documents. */
i = F_ApiGetPropIndex(&params, FS_DisallowMIF);
params.val[i].propVal.u.ival = True;
i = F_ApiGetPropIndex(&params, FS_DisallowDoc);
params.val[i].propVal.u.ival = True;
i = F_ApiGetPropIndex(&params, FS_DisallowGraphicTypes);
params.val[i].propVal.u.ival = True;
F_ApiImport(docId, &tr.beg, "/tmp/mydata.txt",
&params, &returnParamsp);
/* Deallocate property lists. */
F_ApiDeallocatePropVals(&params);
F_ApiDeallocatePropVals(returnParamsp);
. . .
See also
F_ApiImport() and F_ApiDeallocateStructureType().
F_ApiGetInt()
F_ApiGetInt() queries an integer (IntT) property.
202
FDK Programmer’s Reference
F_ApiGetInt()
...
FDK Function Reference
Synopsis
#include "fapi.h"
. . .
IntT F_ApiGetInt(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
Arguments
docId
The ID of the document, dialog box, book, or session containing the object
whose property you want to query. If the object is a session, specify 0.
objId
The ID of the object whose property you want to query.
propNum
The property to query. Specify an API-defined constant, such as FP_FnNum.
Returns
The value for the specified property, or 0 if an error occurs.
..............................................................................
IMPORTANT: If F_ApiGetInt() returns 0, it probably does not indicate an error,
because most IntT property values can be 0. To determine if a returned 0 is a
property value or an error, check FA_errno.
..............................................................................
If F_ApiGetInt() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference 203
3
FDK Function Reference
F_ApiGetIntByName()
Example
The following code displays the major version number of the FrameMaker product
running in the current session:
. . .
#include "futils.h"
UCharT msg[256];
F_Sprintf(msg, "FrameMaker product version %d.",
F_ApiGetInt(0, FV_SessionId, FP_VersionMajor));
F_ApiAlert(msg, FF_ALERT_CONTINUE_NOTE);
. . .
See also
F_ApiSetInt().
F_ApiGetIntByN ame()
F_ApiGetIntByName() queries an integer (IntT) facet.
F_ApiGetIntByName() and other F_ApiGetPropertyTypeByName()
functions use a transaction model to query facets. After you have finished a series of
queries, you must commit the transaction by calling F_ApiGetIntByName() to
query a facet named "".
Synopsis
#include "fapi.h"
. . .
IntT F_ApiGetIntByName(F_ObjHandleT docId,
F_ObjHandleT objId,
StringT propName);
Arguments
docId
The ID of the document containing the inset whose facet you want to query
objId
The ID of the inset whose facet you want to query
propName
The name of the facet to query
Returns
The value for the specified facet, or 0 if an error occurs.
204
FDK Programmer’s Reference
F_ApiGetInts()
...
FDK Function Reference
..............................................................................
IMPORTANT: If F_ApiGetIntByName() returns 0, it may not indicate an error,
because some facet values can be 0. To determine if a returned 0 is a property value
or an error, check FA_errno.
..............................................................................
If F_ApiGetIntByName() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property name is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
Example
The following code queries an integer facet named revision.facet:
. . .
IntT revision;
F_ObjHandleT docId, insetId;
revision = F_ApiGetIntByName(docId, insetId, "revision.facet");
F_ApiGetIntByName(docId, insetId, ""); /* Commit transaction */
. . .
See also
F_ApiSetIntByName().
F_ A p i G e t In t s ()
F_ApiGetInts() queries an F_IntsT (array of integers or object IDs) property.
Synopsis
#include "fapi.h"
. . .
F_IntsT F_ApiGetInts(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
FDK Programmer’s Reference 205
3
FDK Function Reference
F_ApiGetInts()
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to query.
objId
The ID of the object whose property you want to query.
propNum
The property to query. Specify an API-defined constant, such as
FP_GeneralRuleErrorOffsets.
Returns
The F_IntsT structure for the specified property.
The returned F_IntsT structure references memory that is allocated by the API. Use
F_ApiDeallocateInts() to free this memory when you are done with it.
If F_ApiGetInts() fails, the API sets the len field of the returned structure to 0
and assigns one of the following values to FA_errno.
206
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
F_ApiGetKeyCatalog()
...
FDK Function Reference
Example
The following code displays the condition formats that apply to the text at the insertion
point:
. . .
F_ObjHandleT docId;
UCharT msg[256];
F_IntsT condIds;
IntT i;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
/* Get IDs of conditions that apply at insertion point. */
condIds = F_ApiGetInts(FV_SessionId, docId, FP_InCond);
/* Get name of each condition and display it. */
for (i=0; i<condIds.len; i++)
{
F_Sprintf(msg,"%s condition applies to text you are typing.",
F_ApiGetString(docId,condIds.val[i], FP_Name));
F_ApiAlert(msg, FF_ALERT_CONTINUE_NOTE);
}
F_ApiDeallocateInts(&condIds);
. . .
See also
F_ApiSetInts().
F_ApiGetKeyCatalog()
Finds a key catalog with the specified 'tag'.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiGetKeyCatalog(StringT tag)
FDK Programmer’s Reference 207
3
FDK Function Reference
F_ApiGetKeyDefinition()
Arguments
tag
The tag of the new Key Catalog being created.
Returns
Returns the handle of newly-created key catalog.
If F_ApiGetKeyCatalog() fails, the API assigns the following value to
FA_errno.
FA_errno value
Meaning
The tag provided is not valid or the key catalog with this tag does not
exist.
FE_BadName
F _ A p i G e t K e y D e f i n i ti o n ( )
Gets the specified key definition field for the specified key from the specified key
catalog.
#include "fapi.h"
. . .
F_TypedValT F_ApiGetKeyDefinition(F_ObjHandleT keyCatalogId,
StringT key, IntT keyField)
Arguments
keyCatalogId
The ID of the Key Catalog from which to get the key definiton.
key
The tag of the key for which the key definition is being asked for.
keyField
The key field (or key information) that is being asked for.
The valid keyField values and the corresponding value type are as follows:
keyField
Value type
FV_KeydefKeyTag
FT_String
FV_KeydefKeyTarget
FT_String
FV_KeydefKeySrcFile
FT_String
FV_KeydefKeyDuplicate
FT_Integer
FV_KeydefKeySrcType
208
FDK Programmer’s Reference
FT_Integer
F_ApiGetKeyDefinition()
keyField
...
FDK Function Reference
Value type
FV_KeydefKeyVarList
FT_Vals
FV_KeydefKeyDefaultText
FT_String
FV_KeydefKeyFoundInRefFile FT_Integer
FV_KeydefKeyInValid
FT_Integer
FV_KeydefKeyAttrs
FT_AttributesEx
Returns
Returns the requested value in a F_TypedVal structure as per the value type specified
in table above.
If F_ApiGetKeyDefinition() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadObjId
The ID provided does not specify a Key
Catalog.
FE_BadKey
The Key provided is not valid.
FE_KeyCatalogNotLoaded
The Key Catalog provided is currently not
loaded.
FE_KeyCatalogIsStale
The Key Catalog provided is currently
marked as stale and needs to be re-loaded
before using.
FE_KeyDefinitionDoesNotExist
The definition for the specified key is not
available in the Key Catalog.
FE_WrongProduct
(only for keyField="FV_KeydefKeyAttrs")
Current FrameMaker product doesn’t support
the operation.
FE_BadKeyField
The key field provided is not valid.
FDK Programmer’s Reference 209
3
FDK Function Reference
F_ApiGetMathMLCustomXmlData()
F_ApiGetMathMLCustomXmlData()
F_ApiGetMathMLCustomXmlData() is used to get the XML data from an MathML
object. Use this method to set the namespace in the returned MathML XML object. The
XML generated then contains the specified namespace in its elements..
Synopsis
#include "fapi.h"
. . .
StringT F_ApiGetMathMLCustomXmlData (F_ObjHandleT docId,
F_ObjHandleT objId, const F_PropValsT *params)
Arguments
F_ObjHa
ndleT
The ID of the document.
F_ObjHa
ndleT
The ID of the MathML object.
F_PropV
alsT
The property value object with the following properties:
propIdent.num = FS_MathMLNamespacePrefix; (This is new type added for
MathML Namespace prefix)
propVal.valType = FT_String;
sval = F_StrCopyString(“CustomPrefix”);
Returns
The MathML xml with the namespace specified by the user, or 0 if an error occurs.
If F_ApiGetMathMLCustomXmlData() fails, the API assigns one of the following
values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadParameter
Invalid parameter passed:
FS_MathMLNamespacePrefix
FE_Canceled
210
FDK Programmer’s Reference
If the API call is cancelled.
F_ApiGetMetric()
...
FDK Function Reference
F_ApiGetMetric()
F_ApiGetMetric() queries a metric (MetricT) property.
Synopsis
#include "fapi.h"
. . .
MetricT F_ApiGetMetric(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to query.
objId
The ID of the object whose property you want to query.
propNum
The property to query. Specify an API-defined constant, such as FP_Leading.
Returns
The value of the specified property, or 0 if an error occurs.
..............................................................................
IMPORTANT: If F_ApiGetMetric() returns 0, it may not indicate an error,
because some property values can be 0. To determine if a returned 0 is a property
value or an error, check FA_errno.
..............................................................................
If F_ApiGetMetric() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
211
3
FDK Function Reference
F_ApiGetMetricByName()
Example
The following code displays the indent of the Body paragraph format:
. . .
#include "futils.h"
#define in (RealT) (65536*72) /* Frame metric inch */
UCharT msg[256];
F_ObjHandleT docId, fmtId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
fmtId = F_ApiGetNamedObject(docId, FO_PgfFmt, "Body");
F_Sprintf(msg, "Indent: %2.2f inches",
F_ApiGetMetric(docId, fmtId, FP_LeftIndent)/in);
F_ApiAlert(msg, FF_ALERT_CONTINUE_NOTE);
. . .
See also
F_ApiSetMetric().
F_ApiGetMetricByName()
F_ApiGetMetricByName() queries a metric (MetricT) facet.
F_ApiGetMetricByName() and other F_ApiGetPropertyTypeByName()
functions use a transaction model to query facets. After you have finished a series of
queries, you must commit the transaction by using F_ApiGetIntByName() to query
a facet named "".
Synopsis
#include "fapi.h"
. . .
MetricT F_ApiGetMetricByName(F_ObjHandleT docId,
F_ObjHandleT objId,
StringT propName);
212
FDK Programmer’s Reference
F_ApiGetMetricByName()
...
FDK Function Reference
Arguments
docId
The ID of the document containing the inset whose facet you want to query
objId
The ID of the inset whose facet you want to query
propName
The name of the facet to query
Returns
The value for the specified facet, or 0 if an error occurs.
..............................................................................
IMPORTANT: If F_ApiGetMetricByName() returns 0, it may not indicate an
error, because some facet values can be 0. To determine if a returned 0 is a property
value or an error, check FA_errno.
..............................................................................
If F_ApiGetMetricByName() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property name is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
Example
The following code queries a metric facet named height.facet:
. . .
MetricT height;
F_ObjHandleT docId, insetId;
height = F_ApiGetMetricByName(docId, insetId, "height.facet");
F_ApiGetIntByName(docId, insetId, ""); /* Commit */
. . .
See also
F_ApiSetMetricByName().
FDK Programmer’s Reference 213
3
FDK Function Reference
F_ApiGetMetrics()
F_ApiGetMetrics()
F_ApiGetMetrics() queries a metrics (F_MetricsT) property.
Synopsis
#include "fapi.h"
. . .
F_MetricsT F_ApiGetMetrics(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to query
objId
The ID of the object whose property you want to query
propNum
The property to query (for example, FP_TblColWidths)
Returns
An F_MetricsT data structure, containing the MetricT values.
The returned F_MetricsT structure references memory that is allocated by the API.
Use F_ApiDeallocateMetrics() to free this memory when you are done with it.
If F_ApiGetMetrics() fails, the API sets the len field of the returned structure
to 0 and assigns one of the following values to FA_errno.
214
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
F_ApiGetMetrics()
...
FDK Function Reference
Example
The following code displays information about the dash pattern of the selected graphic
object:
. . .
#include "futils.h"
#define pts (RealT)(65536)
F_ObjHandleT docId, objId;
UCharT msg[256];
F_MetricsT metrics;
IntT i;
/* Get IDs of active document and selected object. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
objId = F_ApiGetId(FV_SessionId, docId,
FP_FirstSelectedGraphicInDoc);
if (!objId) return; /* Return if no object is selected */
/* Get selected object’s dash pattern and display it. */
metrics = F_ApiGetMetrics(docId, objId, FP_Dash);
for (i=0; i<metrics.len; i++)
{
F_Sprintf(msg,"%dth dash or space in pattern is %2.2f pts",
i, metrics.val[i]/pts);
F_ApiAlert(msg, FF_ALERT_CONTINUE_NOTE);
}
F_ApiDeallocateMetrics(&metrics);
. . .
See also
F_ApiSetMetrics().
FDK Programmer’s Reference 215
3
FDK Function Reference
F_ApiGetNamedObject()
F_ApiGetNamedObject()
F_ApiGetNamedObject() gets the ID of an object with a specified name (FP_Name
property) and object type. It works with the following object types:

FO_Book

FO_CharFmt

FO_Color

FO_CombinedFontDefn

FO_Command

FO_CondFmt

FO_ElementDef

FO_FmtChangeList

FO_Menu

FO_MenuItemSeparator

FO_MasterPage

FO_PgfFmt

FO_RefPage

FO_RulingFmt

FO_TblFmt

FO_UnanchoredFrame (reference frame)

FO_VarFmt

FO_XRefFmt
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiGetNamedObject(F_ObjHandleT docId,
IntT objType,
StringT name);
216
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetNewXMLDefaultParams()
Arguments
docId
The ID of the document containing the object
objType
The type of object (for example, FO_TblFmt)
name
The name of the object whose ID you want to get
Returns
The ID of the object, or 0 if an error occurs.
If F_ApiGetNamedObject() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_TypeUnNamed
Objects of the specified type do not have names
FE_NameNotFound
Object with the specified name and type doesn’t exist in the specified
document
Example
The following code gets the ID for a paragraph format named Header and deletes it:
. . .
F_ObjHandleT docId, fmtId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
fmtId = F_ApiGetNamedObject(docId, FO_PgfFmt, "Header");
F_ApiDelete(docId, fmtId);
. . .
See also
F_ApiGetId() and F_ApiGetUniqueObject().
F_ApiGetNewXML DefaultP arams()
F_ApiGetNewXMLDefaultParams() generates default open-parameters for
F_ApiNewXML().
FDK Programmer’s Reference 217
3
FDK Function Reference
F_ApiGetNewXMLDefaultParams()
Synopsis
#include "fapi.h"
. . .
F_PropValsT F_ApiGetNewXMLDefaultParams();
Returns
A property list (an F_PropValsT data structure) with the properties shown in the
following table.
Property
218
Instruction or situation and possible values
FS_StructuredApplication
Specifies a structured application to be used for
creatinga new xml document
FS_Doctype
Specifies a doctype to be used for creating a new
XML document
FS_PublicId
Specifies a public id to be used for creating a new
XML document
FS_SystemId
Specifies a DTD-system id to be used for creating
a new xml document
FS_Extension
Used to provide a custom extension for the new
XML document (like Untitled1.dita). Without
customization, FrameMaker determines the
extension by itself based on file type.
FS_Visible
A boolean property that indicates if the new XML
document shall be visible or hidden.
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetNewXMLDefaultParams()
Example
The following code demonstrates how to create a new XML file with a specified
structured application.
F_PropValsT params = F_ApiGetNewXMLDefaultParams ();
F_PropValsT *retParams = NULL;
for (UIntT i = 0; i < params.len; i++)
{
switch (params.val[i].propIdent.num)
{
case FS_StructuredApplication:
params.val[i].propVal.u.sval = F_StrCopyString
("My_Strcutured_App");
break;
}
}
F_ApiNewXML (&params, &retParams);
F_ApiDeallocatePropVals (&params);
F_ApiDeallocatePropVals (retParams);
FDK Programmer’s Reference 219
3
FDK Function Reference
F_ApiGetObjectType()
F_ A p i G e t O b j ect Typ e()
F_ApiGetObjectType() returns an object’s type.
Synopsis
#include "fapi.h"
. . .
UIntT F_ApiGetObjectType(F_ObjHandleT docId,
F_ObjHandleT objectId);
Arguments
docId
The ID of the session, document, or dialog box containing the object
objectId
The object whose type you want to get
Returns
The object type, such as FO_Rectangle or FO_Pgf. For a complete list of object
types, see Chapter 4, “Object Reference.”
Example
The following code notifies the user if the first selected object is a text column:
. . .
F_ObjHandleT docId, objId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
objId = F_ApiGetId(FV_SessionId, docId,
FP_FirstSelectedGraphicInDoc);
if (F_ApiGetObjectType(docId, objId) == FO_TextFrame)
F_ApiAlert("Object is text column.", FF_ALERT_CONTINUE_WARN);
. . .
220
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetOpenDefaultParams()
F_ApiGetOpenDefaultParams()
F_ApiGetOpenDefaultParams() gets a default property list that you can use to
call F_ApiOpen().
Synopsis
#include "fapi.h"
. . .
F_PropValsT F_ApiGetOpenDefaultParams();
Arguments
None.
Returns
A property list (an F_PropValsT data structure) with the properties shown in the
following table. The first value listed by each property is the value that
F_ApiGetOpenDefaultParams() assigns to the property. The other values are
values you can set the property to.
F_ApiGetOpenDefaultParams() property
Instruction or situation and possible values
FS_AlertUserAboutFailure
Alert user if unexpected condition, such as an
unrecognized file type, occurs.
False: don’t notify user when unexpected
conditions occur.
True: notify user when unexpected conditions
occur.
FS_BookIsInUse
Book is already open.
FV_OpenViewOnly: open a view-only copy of
the book.
FV_OpenEditableCopy: open an editable copy
of the book.
FV_DoShowDialog: show dialog box and let
user decide.
FV_ResetLockAndContinue: reset lock and
open file.
FV_DoCancel: cancel Open operation.
FDK Programmer’s Reference 221
3
FDK Function Reference
F_ApiGetOpenDefaultParams()
F_ApiGetOpenDefaultParams() property
Instruction or situation and possible values
FS_DisallowBookDoc
File is a Frame binary book.
False: open it anyway.
True: don’t open it.
FS_DisallowBookMIF
File is a MIF book.
False: open it anyway.
True: don’t open it.
FS_DisallowDoc
File is a Frame binary document.
False: open it anyway.
True: don’t open it.
FS_DisallowFilterTypes
File is filterable.
False: open it anyway.
True: don’t open it.
FS_DisallowMIF
File is a MIF document.
False: open it and convert it.
True: don’t open it.
FS_DisallowPlainText
File is Text Only.
False: open it and convert it.
True: don’t open it.
FS_DisallowSgml
File is an SGML document.
False: open it and convert it.
True: don’t open it.
FS_DontNotifyAPIClients
Open file without notifying other clients.
False: notify other clients.
True: don’t notify other clients.
222
FDK Programmer’s Reference
F_ApiGetOpenDefaultParams() property
Instruction or situation and possible values
FS_FileIsInUse
File is already open.
...
FDK Function Reference
F_ApiGetOpenDefaultParams()
FV_OpenViewOnly: open in View Only format.
FV_OpenEditableCopy: open an editable copy.
FV_DoShowDialog: show dialog box and let
user decide.
FV_ResetLockAndContinue: reset the lock
and open the file.
FV_DoCancel: cancel Open operation.
FS_FileIsOldVersion
File is from previous version of the FrameMaker
product.
FV_DoCancel: cancel Open operation.
FV_DoOK: open it anyway.
FV_DoShowDialog: show dialog box and let
user decide.
FS_FileIsStructured
File has FrameMaker features, but current product
interface isn’t Structured FrameMaker.
FV_OpenViewOnly: open a View Only copy
of file.
FV_DoCancel: cancel Open operation.
FV_StripStructureAndOpen: remove
structure features and open file.
FV_DoShowDialog: show dialog box and let
user decide.
FS_FileIsText
File is Text Only.
FV_TextFile_EOLisEOP: open it and convert
each end-of-line into a paragraph break.
FV_TextFile_EOLisNotEOP: open it but don’t
convert each end-of-line into a paragraph break.
FV_DoShowDialog: show dialog box and let
user decide.
FV_DoCancel: cancel Open operation.
FDK Programmer’s Reference 223
3
FDK Function Reference
F_ApiGetOpenDefaultParams()
F_ApiGetOpenDefaultParams() property
Instruction or situation and possible values
FS_FileTypeHint
If the file is filterable, a string that enables the
FrameMaker product to automatically call the
correct filter to filter it. For information on the
syntax of this string, see Syntax of FP_ImportHint
strings and Syntax of FP_ImportHint strings.
NULL.
FS_FontChangedMetric
A font metric needs to be changed.
FV_DoCancel: cancel Open operation.
FV_DoOK: open the document anyway.
FV_DoShowDialog: show dialog box and let
user decide.
FS_FontNotFoundInCatalog
Catalog contains fonts that aren’t available.
FV_DoCancel: cancel Open operation.
FV_DoOK: open it anyway.
FV_DoShowDialog: show dialog box and let
user decide.
FS_FontNotFoundInDoc
Document uses unavailable fonts.
FV_DoCancel: cancel Open operation.
FV_DoOK: open it anyway.
FV_DoShowDialog: show dialog box and let
user decide.
FS_ForceOpenAsText
Open file as a Text Only document, even if it is
MIF file or filterable file.a
False: open it in a format based on its type.
True: open it as Text Only (use the method
specified by FS_FileIsText).
FS_LanguageNotAvailable
The file uses an unavailable language.
FV_DoCancel: cancel Open operation.
FV_DoOK: open it anyway.
FV_DoShowDialog: show dialog box and let
user decide.
224
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetOpenDefaultParams()
F_ApiGetOpenDefaultParams() property
Instruction or situation and possible values
FS_LockCantBeReset
Attempted to reset FrameMaker product file lock
but wasn’t able to.
FV_DoCancel: cancel Open operation.
FV_DoShowDialog: show dialog box and let
user decide.
FV_DoOK: open without resetting the lock.
FS_MakeIconic
Make document an icon as soon as it’s opened.
False: open file in an open window.
True: iconify it.
FS_MakeVisible
Make document or book visible as soon as it’s
opened.b
True: make visible.
False: don’t make visible.
FS_NameStripe
String specifying the name that appears on the
document title bar.
NULL.
FS_NewDoc
Create new document.
False: open existing document.A
True: create a new document.
FS_NumOpenParams
The available number of properties in the open
script that user can set.
FS_NumOpenReturnParams
The maximum number of properties that an openreturn script can have.
FDK Programmer’s Reference 225
3
FDK Function Reference
F_ApiGetOpenDefaultParams()
F_ApiGetOpenDefaultParams() property
Instruction or situation and possible values
FS_OpenAsType
Specify the format of the file to import.
FV_AUTORECOGNIZE: Default value; recognize
the file type aoutmatically.
FV_TYPE_BINARY: A FrameMaker binary file.
FV_TYPE_FILTER: Use a filter to import this
file. You must specify a valid file type hint for
FS_FileTypeHint.
FV_TYFE_MIF
FV_TYPE_TEXT
FV_TYPE_SGML
FV_TYPE_XML
FS_OpenBookViewOnly
Open book in View Only format.
False: don’t open in View Only format.
True: open in View Only format.
FS_OpenDocViewOnly
Open document in View Only format.
False: don’t open in View Only format.
True: open in View Only format.
FS_OpenId
The ID of the document in the current window if
FS_OpenInNewWindow is set to False.
0
FS_OpenFileNotWritable
How to handle the case when opening a file the
client cannot write to.
FV_DoCancel: Cancel the open operation
FV_DoOK: Open the file in read-only format
FV_DoShowDialog: Display an alert to notify
that the file is not writable.
FS_OpenInNewWindow
Open file in new window.
True: open file in new window.
False: open file in the window occupied by the
document specified by the FS_OpenId property.
226
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetOpenDefaultParams()
F_ApiGetOpenDefaultParams() property
Instruction or situation and possible values
FS_RefFileNotFound
Document imports another file that isn’t available.
FV_DoCancel: cancel Open operation.
FV_AllowAllRefFilesUnFindable: open
anyway and ignore the referenced file.
FV_DoShowDialog: show dialog box and let
user decide.
FS_SgmlOpenApplication
Retained for compatibility. Use
FS_StructureOpenApplication
NULL.(No Application Used)
FS_ShowBrowser
Display Open dialog box.
False: don’t display it.
True: display it.
FS_TemplateShouldInsertRoot
When opening a template document, this can be
set to true (it is false by default). This results in
automatic insertion of the root element.
FS_UpdateMTOC
Updates mini TOC post file is open.
FV_DoUserPreference: Default Value; Use user
specified preferences.
FV_DoYes: update mini TOC.
FV_DoNo: don’t update mini TOC.
FV_DoOk: update mini TOC.
FS_UpdateBrowserDirectory
Update directory displayed in browser
dialog box.
False: don’t update it.
True: update it.
FS_UpdateTextReferences
Update text insets.
FV_DoUserPreference: update text insets if
the document property,
FP_DontUpdateTextInsets, is False.
FV_DoYes: update text insets.
FV_DoNo: don’t update text insets.
FDK Programmer’s Reference 227
3
FDK Function Reference
F_ApiGetOpenDefaultParams()
F_ApiGetOpenDefaultParams() property
Instruction or situation and possible values
FS_UpdateXRefs
Update cross-references.
FV_DoUserPreference: update crossreferences if the document property,
FP_DontUpdateXRefs, is False.
FV_DoYes: update cross-references.
FV_DoNo: don’t update cross-references.
FS_UseAutoSaveFile
Use Autosave file if it is present.
FV_DoCancel: cancel the Open operation.
FV_DoYes: use it.
FV_DoNo: don’t use it.
FV_DoShowDialog: show dialog box and let
user decide.
FS_UseRecoverFile
Use Recover file if it is present.
FV_DoCancel: cancel Open operation.
FV_DoYes: use it.
FV_DoNo: don’t use it.
FV_DoShowDialog: show dialog box and let
user decide.
a. Certain file types, such as Frame binary files, can’t be opened as text.
b. Invisible documents and books can never be active.
The returned F_PropValsT structure references memory that is allocated by the API.
Use F_ApiDeallocatePropVals() to free this memory when you are done with it.
If F_ApiGetOpenDefaultParams() fails, the API sets the len field of the
returned structure to 0.
228
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetOpenDefaultParams()
Example
The following code gets a default Open script with
F_ApiGetOpenDefaultParams(). It modifies the script to instruct the FrameMaker
product to prompt the user if unavailable fonts are used in the document. It then uses the
script to call F_ApiOpen().
. . .
IntT i;
F_PropValsT script, *returnp = NULL;
F_ObjHandleT docId;
/* Get default property list. */
script = F_ApiGetOpenDefaultParams();
/* Get indexes of properties and change them. */
i = F_ApiGetPropIndex(&script, FS_FontNotFoundInDoc);
script.val[i].propVal.u.ival = FV_DoShowDialog;
i = F_ApiGetPropIndex(&script, FS_FontNotFoundInCatalog);
script.val[i].propVal.u.ival = FV_DoShowDialog;
/* Open /tmp/my.doc. */
docId = F_ApiOpen("/tmp/my.doc", &script, &returnp);
/* Free memory used by Open scripts. */
F_ApiDeallocatePropVals(&script);
F_ApiDeallocatePropVals(returnp);
. . .
See also
F_ApiOpen().
FDK Programmer’s Reference 229
3
FDK Function Reference
F_ApiGetPoints()
F_ApiGetPoints()
F_ApiGetPoints() queries a points (F_PointsT) property. You can use it to get
the array of points (or vertices) for a polygon, line, or polyline object.
Synopsis
#include "fapi.h"
. . .
F_PointsT F_ApiGetPoints(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to query
objId
The ID of the object whose property you want to query
propNum
The F_PointsT property to query (for example, FP_Points)
Returns
An F_PointsT structure that contains a pointer to an array of the points’ coordinate
pairs.
The returned F_PointsT structure references memory that is allocated by the API.
Use F_ApiDeallocatePoints() to free this memory when you are done with it.
If F_ApiGetPoints() fails, the API sets the len field of the returned structure to
0 and assigns one of the following values to FA_errno.
230
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
F_ApiGetPoints()
...
FDK Function Reference
Example
The following code displays the coordinates of the selected polygon’s vertices:
. . .
#include "futils.h"
#define in (RealT)(72*65536)
F_ObjHandleT docId, objId;
UCharT msg[256];
F_PointsT points;
IntT i;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
objId = F_ApiGetId(FV_SessionId, docId,
FP_FirstSelectedGraphicInDoc);
/* Make sure object is selected and it is a polygon. */
if (F_ApiGetObjectType(docId, objId) != FO_Polygon)
{
F_ApiAlert("Select a polygon.", FF_ALERT_CONTINUE_NOTE);
return;
}
/* Get the polygon’s array of vertices.*/
points = F_ApiGetPoints(docId, objId, FP_Points);
/* Iterate through vertices, displaying their coordinates. */
for (i=0; i<points.len; i++)
{
F_Sprintf(msg, "Coordinates of point %d are %2.2fin,%2.2fin",
i,
points.val[i].x/in,
points.val[i].y/in);
F_ApiAlert(msg, FF_ALERT_CONTINUE_NOTE);
}
F_ApiDeallocatePoints(&points);
. . .
See also
F_ApiSetPoints().
FDK Programmer’s Reference 231
3
FDK Function Reference
F_ApiGetPropIndex()
F_ApiGetPropIndex()
F_ApiGetPropIndex() gets the index of a property-value pair (PropValT
structure) within a property list. F_ApiGetPropIndex() is a convenience routine
that makes it easier to manipulate the properties in a property list.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiGetPropIndex(F_PropValsT *pvp,
IntT propNum);
Arguments
pvp
The property list
propNum
The property whose index you want to get
Returns
The index (in the property list) of the property’s F_PropValT structure, or
FE_BadPropNum if an error occurs.
Example
The following code gets the session property that specifies the name of the current
FrameMaker product. It first gets the entire FO_Session property list and then uses
F_ApiGetPropIndex() to get the index of the property.
. . .
IntT i;
F_PropValsT props;
props = F_ApiGetProps(0, FV_SessionId);
i = F_ApiGetPropIndex(&props, FP_ProductName);
F_ApiAlert(props.val[i].propVal.u.sval,
FF_ALERT_CONTINUE_NOTE);
. . .
See also
F_ApiGetProps() and F_ApiSetProps().
232
FDK Programmer’s Reference
F_ApiGetProps()
...
FDK Function Reference
F_ApiGetProps()
F_ApiGetProps() gets the entire property list for a specified object.
Synopsis
#include "fapi.h"
. . .
F_PropValsT F_ApiGetProps(F_ObjHandleT docId,
F_ObjHandleT objId);
Arguments
docId
The ID of the session, dialog box, book, or document containing the object
objId
The ID of the object whose property list you want to get
Returns
An F_PropValsT structure that includes an array of property-value pairs.
The returned F_PropValsT structure references memory that is allocated by the API.
Use F_ApiDeallocatePropVals() to free this memory when you are done with it.
If F_ApiGetProps() fails, the API sets the len field of the returned structure to
0 and assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference 233
3
FDK Function Reference
F_ApiGetPropVal()
Example
The following code copies the properties of the Body paragraph to the Heading1
paragraph format. It does not affect any paragraphs that are already tagged with
Heading1.
. . .
F_PropValsT props;
F_ObjHandleT docId, bodyFmtId, heading1Id;
/* Get IDs of document and Body and Heading1 formats. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
bodyFmtId = F_ApiGetNamedObject(docId, FO_PgfFmt, "Body");
heading1Id = F_ApiGetNamedObject(docId, FO_PgfFmt, "Heading1");
if (!bodyFmtId || !heading1Id) return;
/* Copy properties from Body format to Heading1 format. */
props = F_ApiGetProps(docId, bodyFmtId);
F_ApiSetProps(docId, heading1Id, &props);
F_ApiDeallocatePropVals(&props);
. . .
See also
F_ApiSetProps().
F_ApiGetPropVal()
F_ApiGetPropVal() queries a property of any type. If you know a property’s type,
it is normally easier to call an F_ApiGetPropertyType() function, such as
F_ApiGetInt() or F_ApiGetString().
Synopsis
#include "fapi.h"
. . .
F_PropValT F_ApiGetPropVal(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
234
FDK Programmer’s Reference
F_ApiGetPropVal()
...
FDK Function Reference
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to query. If the object is a session, specify 0.
objId
The ID of the object whose property you want to query.
propNum
The property to query. Specify an API-defined constant, such as FP_FnNum.
Returns
The F_PropValT structure for the specified property.
The returned F_PropValT structure references memory that is allocated by the API.
Use F_ApiDeallocatePropVal() to free this memory when you are done with it.
If F_ApiGetPropVal() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
Example
The following code determines whether strikethrough is enabled for the Emphasis
character format:
. . .
F_PropValT prop;
F_ObjHandleT docId, charFmtId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
charFmtId = F_ApiGetNamedObject(docId, FO_CharFmt, "Emphasis");
prop = F_ApiGetPropVal(docId, charFmtId, FP_Strikethrough);
if(prop.propVal.u.ival == True)
F_Printf(NULL,"Strikethrough is enabled for Emphasis.\n");
else
F_Printf(NULL,"Strikethrough is not enabled.\n");
. . .
FDK Programmer’s Reference 235
3
FDK Function Reference
F_ApiGetSaveDefaultParams()
See also
F_ApiGetProps(), F_ApiGetTextPropVal(), and F_ApiSetPropVal().
F_ApiGetSaveDefaultParams()
F_ApiGetSaveDefaultParams() gets a default property list that you can use to
call F_ApiSave().
Synopsis
#include "fapi.h"
. . .
F_PropValsT F_ApiGetSaveDefaultParams();
Arguments
None.
Returns
A property list (an F_PropValsT data structure) with the properties shown in the
following table. The first value listed next to each property is the value that
F_ApiGetSaveDefaultParams() assigns to the property. The other values are
values that you can change the property to.
F_ApiGetSaveDefaultParams()
Property
FS_AlertUserAboutFailure
Meaning and Possible Values
Specifies whether to notify user if something unusual
happens during the Save operation.
False: don’t notify user.
True: notify user.
FS_AutoBackupOnSave
Specifies whether to create a backup file.
FV_SaveUserPrefAutoBackup: follow preference
specified by the session’s FP_AutoBackup property.
FV_SaveYesAutoBackup: make a backup.
FV_SaveNoAutoBackup: don’t make a backup.
FS_DitaCompositeDocTempl
ate
236
FDK Programmer’s Reference
Specifies which template to use while saving the DITA
map as PDF or a book with FrameMaker components.
F_ApiGetSaveDefaultParams()
Property
FS_DitaGenerateComponent
sAtOneLoc
...
FDK Function Reference
F_ApiGetSaveDefaultParams()
Meaning and Possible Values
While generating book with components, specifies
whether individual components should be generated
along with source files or along with target book file
location.
FV_DoUserPreference (default): Use user-specified
prefences
FV_DoYes: Generate at target book location
FV_DoNo: Generate at source location
FS_DitaPostProcessingOnB
ook
Specifies that post-processing should be performed
after saving DITA map. This will result in autonumbering, generation of TOC, LOT, application of
templates, and so on per the settings.
FV_DoUserPreference (default): Use user-specified
prefences
FV_DoYes: Perform post-processing
FV_DoNo: Do not perform post-processing
FS_DitaSavePdfViaBook
Specifies that while saving a DITA map to PDF, the
book route should be used instead of composite route.
FV_DoUserPreference (default): Use user-specified
prefences
FV_DoYes: Use the book route
FV_DoNo: Use the composite route
FS_DontNotifyAPIClients
Specifies whether to save the file without notifying
other clients.
False: notify other clients.
True: don’t notify other clients.
FDK Programmer’s Reference 237
3
FDK Function Reference
F_ApiGetSaveDefaultParams()
F_ApiGetSaveDefaultParams()
Property
FS_FileType
Meaning and Possible Values
Specifies the type of file to save to. This file type must
be one that FrameMaker products save natively. Note
that HTML and XML are saved via filters, and so you
must specify a filter hint string via
FS_SaveFileTypeHint.
FV_SaveFmtBinary: save in Frame binary format.
FV_SaveFmtBinary130: This is used to save a
document as 'Document 13.0', that is, FrameMaker
version 2015 binary document.
FV_SaveFmtBinary140: This is used to save a
document as ’Document 14.0’, that is, FrameMaker
version 2017 binary document.
FV_SaveFmtInterchange: save as MIF.
FV_SaveFmtInterchange70: save as MIF version 7
document.
FV_SaveFmtInterchange140: save as MIF version
14 document.
FV_SaveFmtPdf: save as PostScript, and then invoke
Acrobat Distiller to create a PDF version of the
document.This is the same as choosing PDF from the
Format popup menu in the Save As dialog box.
FV_SaveFmtViewOnly: save in View Only format
FV_SaveFmtSgml: save in SGML format.
FV_SaveFmtText: save in Text Only format.
FV_SaveFmtXML: save in XML format.
FV_SaveFmtFilter: filter on save, using
FS_SaveFileTypeHint to determine the filter.
FS_FileIsInUse
Another user or session is recorded in the file’s lock file.
FV_DoCancel: Cancel the save operation
FV_DoShowDialog: Display the File In Use dialog
box
FV_ResetLockAndContinue: Attempt to reset the
file lock and save the document
238
FDK Programmer’s Reference
F_ApiGetSaveDefaultParams()
Property
FS_LockCantBeReset
...
FDK Function Reference
F_ApiGetSaveDefaultParams()
Meaning and Possible Values
The user clicked Save Anyway in the File In Use dialog
box, or the value of FS_FileInUse is set to
FV_ResetLockAndContinue, but the lock file can’t
be reset. This is usually due to permissions in the lock
file.
FV_DoCancel: Cancel the save operation
FV_DoShowDialog: Display the Cannot Lock File
dialog box
FV_DoOk:Save the document anyway
FS_ModDateChanged
The file has changed since the last time it was opened or
saved in the current session. Somebody else has
probably modified the file.
FV_DoCancel: Cancel the save operation
FV_DoShowDialog: Display the File Has Changed
alert box
FV_DoOk:Save the document anyway
FS_NumSaveParams
The available number of properties in the save script
that user can set.
FS_NumSaveReturnParams
The maximum number of properties that a-save-return
script can have.
FS_SaveFileNotWritable
The file permissions will not allow the file to be saved.
FV_DoCancel: Cancel the save operation
FV_DoShowDialog: Display the Cannot Lock FIle
alert box
FS_SaveFileTypeHint
If FS_FileType is FV_SaveFmtFilter, this string
enables the FrameMaker product to call the correct
filter. For example, use 0001ADBEHTML to save as
HTML or 0001ADBEXML to save as XML.
For information on hint string syntax, see Syntax of
FP_ImportHint strings or Syntax of FP_ImportHint
strings.
NULL.
FDK Programmer’s Reference 239
3
FDK Function Reference
F_ApiGetSaveDefaultParams()
F_ApiGetSaveDefaultParams()
Property
Meaning and Possible Values
FS_MakePageCount
Specifies how to round the page count.
FV_UseCurrentSetting: use default specified by
the document property, FP_PageRounding.
FV_DontChangePageCount: leave pages as is.
FV_MakePageCountEven: with odd number of pages,
add a page to end of document.
FV_MakePageCountOdd: with even number of pages,
add a page to end of document.
FV_DeleteEmptyPages: remove extra pages at end
of document.
FS_RetainNameStripe
Specifies whether to change the name in document title
bar to the name the file is saved to.
False: change name in title bar to the name the file is
saved to.
True: do not change name in title bar.
FS_SaveAsModeName
Specifies where to get filename if FS_SaveMode set
to FV_ModeSaveAs.
FV_SaveAsNameProvided: save under the filename
specified in saveAsName parameter of
F_ApiSave().
FV_SaveAsUseFileName: save as name shown on
document title bar.
FV_SaveAsNameAskUser: prompt user for name.
FS_SaveMode
Specifies whether to use Save or Save As mode.
FV_ModeSaveAs: use Save As mode.
FV_ModeSave: use Save mode.
FS_SaveTextExtraBlank
LineAtEOP
Specifies whether to add an extra line at the end of each
paragraph if the file is being saved as Text Only.
False: don’t add an extra line.
True: add an extra line.
240
FDK Programmer’s Reference
F_ApiGetSaveDefaultParams()
Property
FS_SaveTextTblSetting
...
FDK Function Reference
F_ApiGetSaveDefaultParams()
Meaning and Possible Values
Specifies how to deal with tables if the file is being
saved as Text Only.
FV_SaveTblUserPref: use setting last specified in
Save as Text dialog box.
FV_SaveTblRowsAsPgfs: save each table cell as a
paragraph row-by-row.
FV_SaveTblColsAsPgfs: save each table cell as a
paragraph column-by-column.
FV_SaveSkipTbls: omit tables from a Text
Only file.
FV_SaveTextTblCellSeparator: the character to
write as a cell separator in the text file.
FV_SaveTextTblRowColumnSeparator: the
character to write as a row or column separator in the
text file.
FS_FrameMaker+SGMLSaveAp
plication
Retained for compatibility. Use
FS_StructuredSaveApplication
FS_ShowSaveTextDialog
Specifies whether to display dialog box if the file is
being saved in Text Only format.
False: don’t display dialog box.
True: display dialog box asking user whether to put
paragraph returns at the end of each line.
FS_UpdateFRVList
Specifies whether the file will be added to the list of
files recently visited that appears in the File menu. This
is set to False by default.
False: don’t add the file to the list.
True: add the file to the list.
If F_ApiGetSaveDefaultParams() fails, the API sets the len field of the
returned structure to 0.
The returned F_PropValsT structure references memory that is allocated by the API.
Use F_ApiDeallocatePropVals() to free this memory when you are done with it.
FDK Programmer’s Reference 241
3
FDK Function Reference
F_ApiGetSaveDefaultParams()
Example
The following code uses F_ApiGetSaveDefaultParams() to get a default
F_ApiSave() property list. It modifies the property list to instruct F_ApiSave() to
save /tmp/my.doc as a View Only document named /tmp/viewonly.doc.
. . .
IntT i;
F_PropValsT params, *returnParamsp = NULL;
F_ObjHandleT mydocId, viewonlydocId;
/* Open my.doc. */
mydocId = F_ApiSimpleOpen("/tmp/my.doc", False);
/* Get default script. */
params = F_ApiGetSaveDefaultParams();
/* Get index of FS_FileType property. Then set it. */
i = F_ApiGetPropIndex(&params, FS_FileType);
params.val[i].propVal.u.ival =
FV_SaveFmtViewOnly;
/* Save document, using modified default property list. */
viewonlydocId = F_ApiSave(mydocId, "/tmp/viewonly.doc",
&params, &returnParamsp);
/* Deallocate scripts to save memory. */
F_ApiDeallocatePropVals(&params);
F_ApiDeallocatePropVals(returnParamsp);
. . .
See also
F_ApiSave().
242
FDK Programmer’s Reference
F_ApiGetString()
...
FDK Function Reference
F_ApiGetString()
F_ApiGetString() queries a string (StringT) property.
Synopsis
#include "fapi.h"
. . .
StringT F_ApiGetString(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
Arguments
docId
The ID of the document, dialog box, book, or session containing the object whose
property you want to query. If the object is a session, specify 0.
objId
The ID of the object whose property you want to query.
propNum
The property to query. Specify an API-defined constant, such as FP_Name.
Returns
The string (StringT) for the specified property, or NULL if an error occurs.
..............................................................................
IMPORTANT: Use F_Free() to free the string returned by F_ApiGetString()
when you are done with it.
..............................................................................
If F_ApiGetString() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference 243
3
FDK Function Reference
F_ApiGetStrings()
Example
The following example gets the name of the FrameMaker product currently running:
. . .
StringT productName;
productName = F_ApiGetString(0, FV_SessionId, FP_ProductName);
F_ApiAlert(productName, FF_ALERT_CONTINUE_NOTE);
F_Free(productName);
. . .
See also
F_ApiSetString().
F_ApiGetStrings()
F_ApiGetStrings() queries a multiple-strings (F_StringsT) property. It is useful
for retrieving the list of font families in a session, the words in the document dictionary,
or the list of marker names in a document.
Synopsis
#include "fapi.h"
. . .
F_StringsT F_ApiGetStrings(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
Arguments
244
docId
The ID of the document, dialog box, book, or session containing the object whose
property you want to query. If the object is a session, specify 0.
objId
The ID of the object whose property you want to query.
propNum
The property to query. Specify an API-defined constant, such as
FP_Dictionary or FP_MarkerNames.
FDK Programmer’s Reference
F_ApiGetStrings()
...
FDK Function Reference
Returns
An F_StringsT structure that contains a pointer to the array of strings.
The returned F_StringsT structure references memory that is allocated by the API.
Use F_ApiDeallocateStrings() to free this memory when you are done with it.
If F_ApiGetStrings() fails, the API sets the len field of the returned structure
to 0 and assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
Example
The following code prints the list of font family names for the current session to the
console or error log window:
. . .
#include "futils.h"
IntT i;
F_StringsT strings;
strings = F_ApiGetStrings(0, FV_SessionId, FP_FontFamilyNames);
/* Display font family names.*/
for (i=0; i<strings.len; i++)
F_Printf(NULL,"Family %d: %s\n", i, strings.val[i]);
F_ApiDeallocateStrings(&strings);
. . .
See also
F_ApiSetStrings().
FDK Programmer’s Reference 245
3
FDK Function Reference
F_ApiGetSupportedEncodings()
F_ApiGetSupportedEncodings()
F_ApiGetSupportedEncodings() returns the font encodings supported for the
current session.
Synopsis
#include "fapi.h"
. . .
F_StringsT F_ApiGetSupportedEncodings();
Returns
A list of all the encodings supported for the current session. The following strings
indicate encoding for text fonts:
Value
Means
FrameRoman
Roman text
JISX0208.ShiftJIS
Japanese text
BIG5
Traditional Chinese text
GB2312-80.EUC
Simplified Chinese text
KSC5601-1992
Korean text
Non-text fonts may return FrameRoman, or they may return the family name of the
font. For example, on some platforms the encoding for the Symbol font family is
indicated by the string Symbol.
246
FDK Programmer’s Reference
F_ApiGetTabs()
...
FDK Function Reference
Example
The following code prints the list of supported encodings to the console:
. . .
#include "futils.h"
#include "fstrings.h"
. . .
IntT i;
F_StringsT encodings;
encodings = F_ApiGetSupportedEncodings();
for (i=0; i < encodings.len; i++)
F_Printf(NULL,"Encoding %d: %s\n", i, encodings.val[i]);
F_ApiDeallocateStrings(&encodings);
. . .
F_ApiGetTabs()
F_ApiGetTabs() queries a tabs (F_TabsT) property. The tabs are returned in
left-to-right order.
Synopsis
#include "fapi.h"
. . .
F_TabsT F_ApiGetTabs(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to query
objId
The ID of the object whose property you want to query
propNum
The property to query (for example, FP_Tabs)
Returns
An F_TabsT structure containing the tabs.
FDK Programmer’s Reference 247
3
FDK Function Reference
F_ApiGetTabs()
F_TabsT is defined as:
typedef struct {
UIntT len; /* The number of tabs in val */
F_TabT *val; /* Structures that describe the tabs */
} F_TabsT;
The F_TabT structure is defined as:
typedef struct {
MetricT x; /* Offset from paragraph’s left margin */
UCharT type; /* Constant indicating tab, e.g. FV_TAB_RIGHT */
StringT leader; /* Characters before tab, e.g. "." */
UCharT decimal; /* Character for decimal tab, e.g. "." */
} F_TabT;
248
FDK Programmer’s Reference
F_ApiGetTabs()
...
FDK Function Reference
F_TabT.type can be one of the following.
Type constant
Tab type
FV_TAB_LEFT
Left tab
FV_TAB_CENTER
Center tab
FV_TAB_RIGHT
Right tab
FV_TAB_DECIMAL
Decimal tab
FV_TAB_RELATIVE_LEFT
Relative left tab (allowed only for format change lists)
FV_TAB_RELATIVE_CENTER
Relative center tab (allowed only for format change lists)
FV_TAB_RELATIVE_RIGHT
Relative right tab (allowed only for format change lists)
FV_TAB_RELATIVE_DECIMAL
Relative decimal tab (allowed only for format change
lists)
If F_ApiGetTabs() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
The returned F_TabsT structure references memory that is allocated by the API. Use
F_ApiDeallocateTabs() to free this memory when you are done with it.
FDK Programmer’s Reference 249
3
FDK Function Reference
F_ApiGetTabs()
Example
The following example displays information about tabs in the paragraph containing the
insertion point:
. . .
#include "futils.h"
#define in (RealT) (65536*72)
F_ObjHandleT docId;
IntT i;
F_TabsT tabs;
F_TextRangeT tr;
UCharT msg[256];
/* Get the active document and its current text selection.*/
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
/* Get the tabs for paragraph at end of text selection.*/
tabs = F_ApiGetTabs(docId, tr.end.objId, FP_Tabs);
/* Iterate through tabs, displaying their characteristics.*/
for (i=0; i<tabs.len; i++)
{
F_Sprintf(msg,
"Tab %d: type=%d, x=%2.2f, decimal=%c, leader=%s",
i,
tabs.val[i].type,
tabs.val[i].x/in,
tabs.val[i].decimal,
tabs.val[i].leader);
F_ApiAlert(msg, FF_ALERT_CONTINUE_NOTE);
}
F_ApiDeallocateTabs(&tabs);
. . .
See also
F_ApiSetTabs().
250
FDK Programmer’s Reference
F_ApiGetText()
...
FDK Function Reference
F _ A p i G e t Tex t ( )
F_ApiGetText() gets the text from the following types of objects:

FO_Cell

FO_Element

FO_Flow

FO_Fn

FO_Pgf

FO_SubCol

FO_TextFrame

FO_TextLine

FO_TiApiClient

FO_TiFlow

FO_TiText

FO_TiTextTable

FO_Var

FO_XRef
F_ApiGetText() returns a structure containing an array of text items. Each text item
contains either a string of text, the ID of an object that appears within the text (such as
a table or an anchored frame), an indicator that the text properties have changed, or the
ID of an object that organizes the text (such as a paragraph or a text column). For more
information on text items and how text is represented in FrameMaker products, see
“How the API represents text” in the FDK Programmer’s Guide.
Always deallocate the memory used by the F_TextItemsT structure returned by
F_ApiGetText() when you are through using it. The API provides a convenience
function, named F_ApiDeallocateTextItems(), that does this for you.
Synopsis
#include "fapi.h"
. . .
F_TextItemsT F_ApiGetText(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT flags);
FDK Programmer’s Reference 251
3
FDK Function Reference
F_ApiGetText()
Arguments
docId
The ID of the document containing the object that contains the text.
objId
The ID of the object containing the text you want to get.
flags
Bit flags that specify the type of text items to retrieve. To get specific types of text
items, OR the constants that represent them (for example, use a bitwise OR to
combine FTI_FlowBegin and FTI_String) into flags. To get all types of text
items, specify -1. For a complete list of the constants that represent text item types,
see the table below.
Returns
An F_TextItemsT structure containing the array of text items of the requested types
in the paragraph.
F_TextItemsT is defined as:
typedef struct {
UIntT len;
/* Number of text items. */
F_TextItemT *val; /* Array of text items. */
} F_TextItemsT;
The F_TextItemT structure, which specifies an individual text item, is defined as:
typedef struct{
IntT offset; /* From start of object */
IntT dataType; /* Text item type, e.g. FTI_String. */
union {
StringT sdata; /* A string if the type is FTI_String */
F_ObjHandleT idata; /* ID if type is an anchor. */
} u;
} F_TextItemT;
252
FDK Programmer’s Reference
F_ApiGetText()
...
FDK Function Reference
F_TextItemT.dataType can be one of the following constants:
Text item type (dataType)
What the text item represents
Text item data
FTI_CharPropsChange
A change in the text properties
Flags indicating which
properties have changed
(see the table below)
FTI_ElementBegin
The beginning of a container
structural element
ID of an FO_Element
FTI_ElementEnd
The end of a container
structural element
ID of an FO_Element
FTI_ElemPrefixBegin
The beginning of an element’s
prefix
ID of an FO_Element
FTI_ElemPrefixEnd
The end of an element’s prefix
ID of an FO_Element
FTI_ElemSuffixBegin
The beginning of an element’s
suffix
ID of an FO_Element
FTI_ElemSuffixEnd
The end of an element’s suffix
ID of an FO_Element
FTI_FlowBegin
The beginning of a flow
ID of an FO_Flow
FTI_FlowEnd
The end of a flow
ID of an FO_Flow
FTI_FnAnchor
A footnote
ID of an FO_Fn
FTI_FrameAnchor
An anchored frame
ID of an FO_AFrame
FTI_LineBegin
The beginning of a line
Nothing
FTI_LineEnd
The end of a line and the line
end type
If the line end is a normal
line end, 0; if it is a forced
line end, the
FTI_HardLineEnd flag
is set; if it is a hyphen line
end, the
FTI_HyphenLineEnd
flag is set
FTI_MarkerAnchor
A marker
ID of an FO_Marker
FTI_PageBegin
The beginning of a page
ID of an FO_Page
FTI_PageEnd
The end of a page
ID of an FO_Page
FTI_PgfBegin
The beginning of a paragraph
ID of an FO_Pgf
FTI_PgfEnd
The end of a paragraph
ID of an FO_Pgf
FDK Programmer’s Reference 253
3
254
FDK Function Reference
F_ApiGetText()
Text item type (dataType)
What the text item represents
Text item data
FTI_String
A string of characters with the
same condition and character
format
A character string
FTI_SubColBegin
The beginning of a column
ID of an FO_SubCol
FTI_SubColEnd
The end of a column
ID of an FO_SubCol
FTI_TblAnchor
A table
ID of an FO_Tbl
FTI_TextFrameBegin
The beginning of a text frame
ID of an FO_TextFrame
FTI_TextFrameEnd
The end of a text frame
ID of an FO_TextFrame
FTI_TextInsetBegin
The beginning of a text inset
ID of an
FO_TiApiClient,
FO_TiFlow,
FO_TiText, or
FO_TiTextTable
FTI_TextInsetEnd
The end of a text inset
ID of an
FO_TiApiClient,
FO_TiFlow,
FO_TiText, or
FO_TiTextTable
FTI_TextObjId
The object that the offsets of all
the text items are relative to
ID of an FO_Pgf or
FO_TextLine
FTI_VarBegin
The beginning of a variable
ID of an FO_Var
FTI_VarEnd
The end of a variable
ID of an FO_Var
FTI_XRefBegin
The beginning of a crossreference
ID of an FO_XRef
FTI_XRefEnd
The end of a cross-reference
ID of an FO_XRef
FDK Programmer’s Reference
F_ApiGetText()
...
FDK Function Reference
The following table lists the bit flags that a client can bitwise AND with the idata
field of an FTI_CharPropsChange text item. For example, to determine if the font
family changed, bitwise AND the FTF_FAMILY flag with the idata field.
Flag
Meaning
FTF_ALL
OR of all the flags listed above.
FTF_ANGLE
The font angle has changed.
FTF_CAPITALIZATION
The capitalization has changed.
FTF_CHANGEBAR
The change bars have changed.
FTF_CHARTAG
The Character Catalog format has changed.
FTF_COLOR
The color has changed.
FTF_CONDITIONTAG
The condition tag has changed.
FTF_ENCODING
The text encoding has changed.
FTF_FAMILY
The font family has changed.
FTF_IIF
An internal flag having to do with asian text. input. If there is a
non-zero value for this flag, a front end processor is controlling
that text; you should not modify the associated text item.
FTF_KERNX
The kern-x characteristic has changed.
FTF_KERNY
The kern-y characteristic has changed.
FTF_LANGUAGE
Character language has changed
FTF_OUTLINE
The outline characteristic has changed.
FTF_OVERLINE
The overline characteristic has changed.
FTF_PAIRKERN
The pair kerning has changed.
FTF_POSITION
The character position has changed.
FTF_SHADOW
The shadow characteristic has changed.
FTF_SIZE
The font size has changed.
FTF_SPREAD
The font spread has changed.
FTF_STRETCH
Font stretch value has changed
FTF_STRIKETHROUGH
The strikethrough characteristic has changed.
FTF_TSUME
Tsume setting has changed
FTF_UNDERLINING
The underlining has changed.
FDK Programmer’s Reference 255
3
FDK Function Reference
F_ApiGetText()
Flag
Meaning
FTF_VARIATION
The font variation has changed.
FTF_WEIGHT
The font weight has changed.
If F_ApiGetText() fails, the API sets the len field of the returned structure to 0
and assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_NotTextObject
Object specified for the text location is not an object that contains
text
If you call F_ApiGetText() for a structural element (FO_Element object), the
returned information depends on the type of element, as shown in the following table:
256
Element’s FP_ElementType value
Information returned by F_ApiGetText()
FV_FO_CONTAINER
All the text items from the beginning to the end of
the element.
FV_FO_SYS_VAR
All the text items from the beginning to the end of
the variable.
FV_FO_XREF
All the text items from the beginning to the end of
the cross-reference.
FV_FO_FOOTNOTE
All the text items from the beginning to the end of
the footnote.
FV_FO_TBL_TITLE
All the text items from the beginning to the end of
the table title.
FV_FO_TBL_CELL
All the text items from the beginning to the end of
the cell.
FDK Programmer’s Reference
F_ApiGetText()
Element’s FP_ElementType value
Information returned by F_ApiGetText()
FV_FO_TBL_HEADING
Nothing. F_ApiGetText() fails.
...
FDK Function Reference
FV_FO_TBL_BODY
FV_FO_TBL_FOOTING
FV_FO_MARKER
FV_FO_TBL
FV_FO_GRAPHIC
FV_FO_EQN
FV_FO_TBL_ROW
The returned F_TextItemsT structure references memory that is allocated by the
API. Use F_ApiDeallocateTextItems() to free this memory when you are done
with it.
Example
The following code displays the number of lines in the paragraph containing the
insertion point (or the beginning of the current text selection):
. . .
#include "futils.h"
F_ObjHandleT docId;
F_TextRangeT tr;
F_TextItemsT tis;
UCharT msg[256];
/* Get active document and the selection or insertion point. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
/* Get all the line-end text items in the paragraph. */
tis = F_ApiGetText(docId, tr.beg.objId, FTI_LineEnd);
F_Sprintf(msg, "Number of lines is %d.", tis.len);
F_ApiAlert(msg, FF_ALERT_CONTINUE_WARN);
F_ApiDeallocateTextItems(&tis);
. . .
FDK Programmer’s Reference 257
3
FDK Function Reference
F_ApiGetText2()
See also
F_ApiAddText(), F_ApiDeallocateStructureType(), and F_ApiDeleteText().
F_ApiGetText2()
F_ApiGetText2() gets the text from all the objects available to F_ApiGetText(),
as well as an extended set of document objects that includes the following:

FO_Rubi
..............................................................................
IMPORTANT: This function takes two flags arguments, thus extending the number of
text item types you can retrieve. Except for the additional flags argument, this
function is the same as F_ApiGetText(), described on page 251. Note that
F_ApiGetText() still works; you just can’t use it to access the extended set of text
item types.
..............................................................................
F_ApiGetText2() returns a structure containing an array of text items. Each text
item contains either a string of text, the ID of an object that appears within the text (such
as a table or an anchored frame), an indicator that the text properties have changed, or
the ID of an object that organizes the text (such as a paragraph or a text column). For
more information on text items and how text is represented in FrameMaker products,
see “How the API represents text” in the FDK Programmer’s Guide.
Always deallocate the memory used by the F_TextItemsT structure returned by
F_ApiGetText2() when you are through using it. The API provides a convenience
function, named F_ApiDeallocateTextItems(), that does this for you.
Synopsis
#include "fapi.h"
. . .
F_TextItemsT F_ApiGetText2(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT flags,
IntT flags2);
258
FDK Programmer’s Reference
F_ApiGetText2()
...
FDK Function Reference
Arguments
docId
The ID of the document containing the object that contains the text.
objId
The ID of the object containing the text you want to get.
flags
Bit flags for the base set text item types that of text items to retrieve. For a
complete list of the base set of constants that represent text item types, see
F_ApiGetText().
flags2
Bit flags for the extended set of text item types that specify the type of text items
to retrieve. To get specific types of text items from the extended set, OR the
constants that represent them (for example, use a bitwise OR to combine
FTI2_RubiTextBegin and FTI2_RubiTextEnd) into flags2. To get all
types of the extended set of text items, specify -1. For a complete list of the
constants that represent the extended set of text item types, see the table below.
Returns
An F_TextItemsT structure containing the array of text items of the requested types
in the paragraph.
F_TextItemsT is defined as:
typedef struct {
UIntT len;
/* Number of text items. */
F_TextItemT *val; /* Array of text items. */
} F_TextItemsT;
The F_TextItemT structure, which specifies an individual text item, is defined as:
typedef struct{
IntT offset; /* From start of object */
IntT dataType; /* Text item type, e.g. FTI_String. */
union {
StringT sdata; /* A string if the type is FTI_String */
F_ObjHandleT idata; /* ID if type is an anchor. */
} u;
} F_TextItemT;
FDK Programmer’s Reference 259
3
FDK Function Reference
F_ApiGetText2()
F_TextItemT.dataType can be one of the following constants:
Text item type (dataType)
What the text item represents
Text item data
FTI2_RubiTextBegin
The beginning of rubi text (and
implicitly, the beginning of
rubi text
ID of the FO_Rubi object
for the rubi composite that
contains the rubi text
FTI2_RubiTextEnd
The end of rubi text
ID of the FO_Rubi object
for the rubi composite that
contains the rubi text
FTI2_RubiComposite
Begin
The beginning of a rubi
composite (and implicitly, the
beginning of oyamoji text)
ID of an FO_Rubi object
FTI2_RubiComposite
End
The end of a rubi composite
ID of an FO_Rubi object
If F_ApiGetText2() fails, the API sets the len field of the returned structure to
0 and assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_NotTextObject
Object specified for the text location is not an object that contains
text
The returned F_TextItemsT structure references memory that is allocated by the
API. Use F_ApiDeallocateTextItems() to free this memory when you are done
with it.
260
FDK Programmer’s Reference
F_ApiGetText2()
...
FDK Function Reference
Example
The following code displays the number of rubi compositesin the paragraph containing
the insertion point (or the beginning of the current text selection):
. . .
#include "futils.h"
. . .
F_ObjHandleT docId;
F_TextRangeT tr;
F_TextItemsT tis;
UCharT msg[256];
/* Get active document and the selection or insertion point. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
/* Get all the rubi composite begin text items in the paragraph.
*/
tis = F_ApiGetText2(docId, tr.beg.objId, 0,
FTI2_RubiCompositeBegin);
F_Sprintf(msg, "Number of rubi composites is %d.", tis.len);
F_ApiAlert(msg, FF_ALERT_CONTINUE_WARN);
F_ApiDeallocateTextItems(&tis);
. . .
See also
F_ApiAddText(), F_ApiDeallocateStructureType(), and F_ApiDeleteText().
FDK Programmer’s Reference 261
3
FDK Function Reference
F_ApiGetTextForRange()
F_ApiGetTextForRange()
F_ApiGetTextForRange() gets the text for a specified text range. It provides the
same parameters and functionality as F_ApiGetText(), except it allows you to
specify a text range instead of an object.
Synopsis
#include "fapi.h"
. . .
F_TextItemsT F_ApiGetTextForRange(F_ObjHandleT docId,
F_TextRangeT *tr,
IntT flags);
Arguments
docId
The ID of the document containing the text range that contains the text.
tr
The text range containing the text you want to get. For information on specifying
text ranges, see “Getting and setting the insertion point or text selection” in the FDK
Programmer’s Guide.
flags
Bit flags that specify the type of text items to retrieve. To get specific types of text
items, OR the constants that represent them (for example, FTI_FlowBegin and
FTI_String) into flags. To get all types of text items, specify -1. For a
complete list of the constants that represent text item types, see F_ApiGetText().
Returns
An F_TextItemsT structure containing the array of text items of the requested types
in the paragraph.
If F_ApiGetTextForRange() fails, the API sets the len field of the returned
structure to 0 and assigns one of the following values to FA_errno.
262
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_NotTextObject
Object specified for the text range is not an object that contains
text
FE_BadRange
Specified text range is invalid
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in the
specified paragraph or text line
FDK Programmer’s Reference
F_ApiGetTextForRange2()
...
FDK Function Reference
The returned F_TextItemsT structure references memory that is allocated by the
API. Use F_ApiDeallocateTextItems() to free this memory when you are done
with it.
Example
The following code prints the selected text in the active document:
. . .
F_ObjHandleT docId;
F_TextRangeT tr;
F_TextItemsT tis;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
/* If there’s just an insertion point, no text is selected. */
if(tr.beg.objId == tr.end.objId
&& tr.beg.offset == tr.end.offset) return;
tis = F_ApiGetTextForRange(docId, &tr, FTI_String);
/* Traverse text items and print strings and line ends. */
for (i=0; i<tis.len; i++)
{
F_Printf(NULL,"%s", tis.val[i].u.sdata);
}
F_ApiDeallocateTextItems(&tis);
. . .
See also
F_ApiAddText(), F_ApiDeallocateStructureType(), and F_ApiGetText().
F_ApiGetTextForRange2()
F_ApiGetTextForRange2() gets the text for a specified text range. It provides the
same parameters and functionality as F_ApiGetText2(), except it allows you to
specify a text range instead of an object.
FDK Programmer’s Reference 263
3
FDK Function Reference
F_ApiGetTextForRange2()
Synopsis
#include "fapi.h"
. . .
F_TextItemsT F_ApiGetTextForRange(F_ObjHandleT docId,
F_TextRangeT *tr,
IntT flags
IntT flags2);
Arguments
docId
The ID of the document containing the text range that contains the text.
tr
The text range containing the text you want to get. For information on
specifying text ranges, see “Getting and setting the insertion point or text
selection” in the FDK Programmer’s Guide.
flags
Bit flags for the base set text item types that of text items to retrieve. For a
complete list of the base set of constants that represent text item types, see
F_ApiGetText().
flags2
Bit flags for the extended set of text item types that specify the type of text items
to retrieve. To get specific types of text items from the extended set, OR the
constants that represent them (for example, use a bitwise OR to combine
FTI2_RubiTextBegin and FTI2_RubiTextEnd) into flags2. To get all
types of the extended set of text items, specify -1. For a complete list of the
constants that represent the extended set of text item types, see the table below.
Returns
An F_TextItemsT structure containing the array of text items of the requested types
in the paragraph.
If F_ApiGetTextForRange() fails, the API sets the len field of the returned
structure to 0 and assigns one of the following values to FA_errno.
264
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_NotTextObject
Object specified for the text range is not an object that contains
text
FE_BadRange
Specified text range is invalid
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in the
specified paragraph or text line
FDK Programmer’s Reference
F_ApiGetTextForRange2()
...
FDK Function Reference
The returned F_TextItemsT structure references memory that is allocated by the
API. Use F_ApiDeallocateTextItems() to free this memory when you are done
with it.
Example
The following code prints the selected text in the active document:
. . .
F_ObjHandleT docId;
F_TextRangeT tr;
F_TextItemsT tis;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
/* If there’s just an insertion point, no text is selected. */
if(tr.beg.objId == tr.end.objId
&& tr.beg.offset == tr.end.offset) return;
/* Get all the rubi composite begin text items in the selection.
*/
tis = F_ApiGetTextForRange2(docId, &tr, 0,
FTI2_RubiCompositeBegin);
F_Sprintf(msg, "Number of rubi composites is %d.", tis.len);
F_ApiAlert(msg, FF_ALERT_CONTINUE_WARN);
F_ApiDeallocateTextItems(&tis);
. . .
See also
F_ApiAddText(), F_ApiDeallocateStructureType(), and F_ApiGetText().
FDK Programmer’s Reference 265
3
FDK Function Reference
F_ApiGetTextLoc()
F _ A p i G e t Tex t L o c ( )
F_ApiGetTextLoc() gets a text location (F_TextLocT) property.
Synopsis
#include "fapi.h"
. . .
F_TextLocT F_ApiGetTextLoc(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to query
objId
The ID of the object whose property you want to query
propNum
The property to query
Returns
An F_TextLocT structure specifying a text location. The F_TextLocT structure is
defined as:
typedef struct{
F_ObjHandleT objId; /* Object containing text */
IntT offset; /* Characters from start of object */
} F_TextLocT;
If F_ApiGetTextLoc() fails, the API assigns one of the following values to
FA_errno.
266
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
F_ApiGetTextProps()
...
FDK Function Reference
Example
The following code moves the insertion point to the first marker in the active
document’s list of markers:
. . .
F_ObjHandleT docId, mrkrId;
F_TextLocT tl;
F_TextRangeT tr;
/* Get IDs of active document and the first marker. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
mrkrId = F_ApiGetId(FV_SessionId, docId, FP_FirstMarkerInDoc);
tl = F_ApiGetTextLoc(docId, mrkrId, FP_TextLoc);
if (tl.objId == 0) return;
tr.end.objId = tr.beg.objId = tl.objId;
tr.end.offset = tr.beg.offset = tl.offset;
F_ApiSetTextRange(FV_SessionId, docId, FP_TextSelection, &tr);
. . .
See also
F_ApiSetTextRange().
F_ A p i G e t Tex tP rop s()
F_ApiGetTextProps() gets the text properties (such as the format tag, font family
and size, and conditions) for a location in text. Because the text properties can be
different for each character, you can only get the text properties for an individual
location in text.
Synopsis
#include "fapi.h"
. . .
F_PropValsT F_ApiGetTextProps(F_ObjHandleT docId,
F_TextLocT *textLocp);
FDK Programmer’s Reference 267
3
FDK Function Reference
F_ApiGetTextProps()
Arguments
docId
The ID of the document containing the text location.
textLocp
The text location of the character that you want to get text properties for. The
returned properties are the properties that apply to the character to the right of
the specified location. For information on specifying text locations, see
“Getting and setting the insertion point or text selection” in the FDK
Programmer’s Guide.
Returns
The text property list (an F_PropValsT structure) for the text location.
If F_ApiGetTextProps() fails, the API sets the len field of the returned structure
to 0 and assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_NotTextObject
Object specified for the text location is not an object that contains
text
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in the
specified paragraph or text line
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
The returned F_PropValsT structure references memory that is allocated by the API.
Use F_ApiDeallocatePropVals() to free this memory when you are done with it.
268
FDK Programmer’s Reference
F_ApiGetTextPropVal()
...
FDK Function Reference
Example
The following code applies the text properties of the first character in the current
selection to the rest of the selection:
. . .
#include "futils.h"
F_TextRangeT tr;
F_PropValsT props;
F_ObjHandleT docId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
/* Get insertion point or text selection and its properties. */
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if (tr.beg.objId == 0) return;
props = F_ApiGetTextProps(docId, &tr.beg);
/* Apply the properties to the entire selection. */
F_ApiSetTextProps(docId, &tr, &props);
F_ApiDeallocatePropVals(&props);
. . .
See also
F_ApiSetTextProps().
F_ApiGetTextPropVal()
F_ApiGetTextPropVal() gets a text property (such as the format tag, font family
and size, or conditions) for a location in text. Because a text property can be different
for each character, you can get it for only one location in text at a time.
Synopsis
#include "fapi.h"
. . .
F_PropValT F_ApiGetTextPropVal(F_ObjHandleT docId,
F_TextLocT *textLocp,
IntT propNum);
FDK Programmer’s Reference 269
3
FDK Function Reference
F_ApiGetTextPropVal()
Arguments
docId
The ID of the document containing the text location.
textLocp
The text location of the character that you want to get the text property for. The
returned property applies to the character to the right of this location.
propNum
The property to query. Specify an API-defined constant, such as
FP_FontFamily.
Returns
The F_PropValT structure for the specified property.
The returned F_PropValT structure references memory that is allocated by the API.
Use F_ApiDeallocatePropVal() to free this memory when you are done with it.
If F_ApiGetTextPropVal() fails, the API assigns one of the following values to
FA_errno.
270
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_NotTextObject
Object specified for the text location is not an object that contains
text
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in the
specified paragraph or text line
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
F_ApiGetTextRange()
...
FDK Function Reference
Example
The following code prints the font family of the character to the right of the insertion
point:
. . .
F_TextRangeT tr;
F_PropValT prop;
F_ObjHandleT docId;
F_StringsT families;
/* Get the current insertion point. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(!tr.beg.objId) return;
/* Get list of font families in the session. */
families = F_ApiGetStrings(0, FV_SessionId, FP_FontFamilyNames);
/* Get the index of the font family (in the list of families)
** of the character to the right of the insertion point.
*/
prop = F_ApiGetTextPropVal(docId, &tr.end, FP_FontFamily);
F_Printf(NULL,"The font family is %s.\n",
families.val[prop.propVal.u.ival]);
. . .
See also
F_ApiGetTextProps() and F_ApiGetTextVal().
F_ A p i G e t Tex tR ange()
F_ApiGetTextRange() gets a text range property. It is useful for getting the
insertion point or text selection in a document.
Synopsis
#include "fapi.h"
. . .
F_TextRangeT F_ApiGetTextRange(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
FDK Programmer’s Reference 271
3
FDK Function Reference
F_ApiGetTextRange()
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to query
objId
The ID of the object whose property you want to query
propNum
The property to query (for example, FP_TextSelection)
Returns
An F_TextRangeT structure specifying a text range. The F_TextRangeT structure
is defined as:
typedef struct {
F_TextLocT beg; /* The beginning of the range */
F_TextLocT end; /* The end of the range */
} F_TextRangeT;
The F_TextLocT structure is defined as:
typedef struct{
F_ObjHandleT objId; /* Object containing text. */
IntT offset; /* Characters from beginning */
} F_TextLocT;
272
FDK Programmer’s Reference
F_ApiGetTextVal()
...
FDK Function Reference
If F_ApiGetTextRange() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
Example
See F_ApiSetTextRange().
See also
F_ApiSetTextRange().
F_ A p i G e t Tex tVal()
F_ApiGetTextVal() gets the value of a specified text property, which can be of any
type.
Synopsis
#include "fapi.h"
. . .
F_TypedValT F_ApiGetTextVal(F_ObjHandleT docId,
F_TextLocT *textLocp,
IntT propNum);
FDK Programmer’s Reference 273
3
FDK Function Reference
F_ApiGetTextVal()
Arguments
docId
The ID of the document containing the text location.
textLocp
The text location of the character that you want to get the text
property for. The returned property applies to the character to
the right of this location.
propNum
The property to query. Specify an API-defined constant, such
as FP_FontFamily.
Returns
An F_TypedValT structure containing the value of the specified property.
If F_ApiGetTextVal() fails, the API assigns one of the following values to
FA_errno.
274
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_NotTextObject
Object specified for the text location is not an object that contains
text
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in the
specified paragraph or text line
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
F_ApiGetUBytesByName()
...
FDK Function Reference
Example
The following code prints the name of the character format applied to the character to
the right of the insertion point.
. . .
F_TextRangeT tr;
F_TypedValT val;
F_ObjHandleT docId;
/* Get the current insertion point. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(!tr.beg.objId) return;
val = F_ApiGetTextVal(docId, &tr.end, FP_CharTag);
F_Printf(NULL,"The character tag is %s.\n", val.u.sval);
. . .
See also
F_ApiGetTextProps() and F_ApiGetTextPropVal().
F_ApiGetUBytesB y Name()
F_ApiGetUBytesByName() queries an unsigned bytes (F_UBytesT) inset facet.
The standard facets, EPSI and FrameImage, are examples of unsigned bytes facets.
If a facet contains a large amount of data, F_ApiGetUBytesByName() only gets a
portion of the data each time you call it. To query a facet that contains a large amount of
data, call F_ApiGetUBytesByName() repeatedly until you have retrieved all the
data (that is, until F_UBytesT.len is 0).
F_ApiGetUBytesByName() and other F_ApiGetPropertyTypeByName()
functions use a transaction model to query properties. After you have finished a series
of queries, you must commit the transaction by using F_ApiGetIntByName() to
query a facet named "".
Synopsis
#include "fapi.h"
. . .
F_UBytesT F_ApiGetUBytesByName(F_ObjHandleT docId,
F_ObjHandleT objId,
StringT propName);
FDK Programmer’s Reference 275
3
FDK Function Reference
F_ApiGetUBytesByName()
Arguments
docId
The ID of the document containing the inset whose facet you want to query
objId
The ID of the inset whose facet you want to query
propName
The name of the facet to query
Returns
An F_UBytesT structure that contains a portion of the facet’s data.
F_UBytesT is defined as:
typedef struct {
UIntT len; /* The number of unsigned bytes */
UByteT *val; /* The facet data */
} F_UBytesT;
The returned F_UBytesT structure references memory that is allocated by the API.
Use F_ApiDeallocateUBytes() to free this memory when you are done with it.
If F_ApiGetUBytesByName() fails, the API assigns one of the following values to
FA_errno.
276
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property name is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
F_ApiGetUniqueObject()
...
FDK Function Reference
Example
The following code gets all the bytes in the my.facet facet of an inset:
. . .
F_ObjHandleT docId, insetId;
F_UBytesT aUBytes;
IntT n;
do {
aUBytes = F_ApiGetUBytesByName(docId, insetId, "my.facet");
n = aUBytes.len;
if(n>0)
{
/* Code to do something with aUBytes goes here. */
}
} while (n > 0);
F_ApiGetIntByName(docId, insetId, ""); /* Commit transaction. */
F_ApiDeallocateUBytes(&aUBytes);
. . .
See also
F_ApiSetUBytesByName().
F_ApiGetUniqueObject()
F_ApiGetUniqueObject() gets the ID of an object from its persistent unique
identifier (UID). FrameMaker products assign a UID to each object in a document or
book that isn’t identified by a name. The UID, unlike the object’s ID, does not change
from one session to another.
..............................................................................
IMPORTANT: When you copy an object to the clipboard and paste it, the FrameMaker
product changes the UID. This also happens when you hide and show conditional text.
..............................................................................
Synopsis
F_ObjHandleT F_ApiGetUniqueObject(F_ObjHandleT docId,
IntT objType,
IntT unique);
FDK Programmer’s Reference 277
3
FDK Function Reference
F_ApiGetUniqueObject()
Arguments
docId
The ID of the document containing the object
objType
The type of object (for example, FO_Pgf)
unique
The object’s UID
Returns
The ID of the object, or 0 if an error occurs.
If F_ApiGetUniqueObject() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_TypeUnNamed
Objects of the specified type aren’t identified by UIDs
FE_NameNotFound
Object with specified UID couldn’t be found
Example
The following code will build a client gets and saves the location of the current insertion
point (or the beginning of the current text selection) when the user chooses a menu item
named Save Position. If the user subsequently chooses the Return to Previous Position
menu item, the client scrolls to the saved insertion point, even if the document has been
exited and reopened in the meantime.
278
FDK Programmer’s Reference
F_ApiGetUniqueObject()
...
FDK Function Reference
#include "fapi.h"
#define SAVE 1
#define LAST 2
IntT pgfUID;
F_TextRangeT tr;
VoidT F_ApiInitialize(initialization)
IntT initialization;
{
F_ObjHandleT menuBarId, menuId;
menuBarId = F_ApiGetNamedObject(FV_SessionId, FO_Menu,
"!MakerMainMenu");
menuId = F_ApiDefineAndAddMenu(menuBarId, "APIMenu", "API");
F_ApiDefineAndAddCommand(SAVE, menuId,"SaveLastPosCmd",
"Save position","");
F_ApiDefineAndAddCommand(LAST, menuId,"ReturnToLastPosCmd",
"Return to previous position","");
}
VoidT F_ApiCommand(command)
IntT command;
{
F_ObjHandleT docId, pgfId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
switch(command)
{
case SAVE: /* Get and save the insertion point. */
tr = F_ApiGetTextRange(FV_SessionId, docId,
FP_TextSelection);
if (!tr.beg.objId) return;
/* Get UID of paragraph containing insertion point.*/
pgfUID = F_ApiGetInt(docId, tr.beg.objId, FP_Unique);
break;
FDK Programmer’s Reference 279
3
FDK Function Reference
F_ApiGetUpdateBookDefaultParams()
case LAST: /* Scroll to saved insertion point. */
if (!pgfUID) break; /* Break if no insertion point. */
/* Get paragraph ID from its UID. Then scroll to it. */
pgfId = F_ApiGetUniqueObject(docId, FO_Pgf, pgfUID);
tr.beg.objId = tr.end.objId = pgfId;
F_ApiScrollToText(docId, &tr);
}
}
See also
F_ApiGetNamedObject().
F_ApiGetUpdateBookDefaultParams()
F_ApiGetUpdateBookDefaultParams() gets a default property list that you can
use to call F_ApiUpdateBook().
Synopsis
#include "fapi.h"
. . .
F_PropValsT F_ApiGetUpdateBookDefaultParams();
Arguments
None.
Returns
A property list (an F_PropValsT data structure) with the properties shown in the
following table. The first value listed by each property is the value that
F_ApiGetUpdateBookDefaultParams() assigns to the property. The other
values are values you can set the property to.
F_ApiGetUpdateBookDefault
Params() property
Instruction or situation and possible values
FS_AlertUserAboutFailure
Alert user with warnings and messages if necessary.
False: don’t notify user when unexpected conditions
occur.
True: notify user when unexpected conditions occur.
280
FDK Programmer’s Reference
F_ApiGetUpdateBookDefault
Params() property
FS_AllowInconsistentNum
Props
...
FDK Function Reference
F_ApiGetUpdateBookDefaultParams()
Instruction or situation and possible values
Allow the FrameMaker product to update numbering,
text insets, etc. of all the FrameMaker documents in
the book, even if there are documents in the book with
numbering properties that don’t match the properties
specified in the book.
FV_DoOK: update numbering even if there are
inconsistent properties in the book
FV_DoCancel: cancel the update operation when it
encounters a document with inconsistent numbering
properties
FV_DoShowDialog: show dialog box and let user
decide
FS_AllowNonFMFiles
Allow the FrameMaker product to update numbering,
text insets, etc. of all the FrameMaker documents in
the book, even if there are documents in the book that
were not created by a FrameMaker product.
FV_DoOK: update the book even if the book contains
files not created by a FrameMaker product
FV_DoCancel: cancel the update operation when it
encounters a document not created by a FrameMaker
product
FV_DoShowDialog: show dialog box and let user
decide
FS_AllowViewOnlyFiles
Allow the FrameMaker product to update view-only
documents in the book.
FV_DoOK: update the view-only documents
FV_DoCancel: cancel the entire update operation
when it encounters a view-only document
FV_DoShowDialog: show dialog box and let user
decide
FS_MakeVisible
Make newly generated files (lists and indexes) visible.
True: make visible
False: don’t make visible
FS_NumExportParams
The available number of properties in the export script
that user can set.
FS_NumExportReturnParams
The number of parameters returned by the export
script.
FDK Programmer’s Reference 281
3
FDK Function Reference
F_ApiGetUpdateBookDefaultParams()
F_ApiGetUpdateBookDefault
Params() property
Instruction or situation and possible values
FS_ShowBookErrorLog
Display the book error log for this update operation.
False: don’t display the error log; all warnings and
errors go to the console
True: display the error log
FS_UpdateBookGenerated
Files
Update generated files such as TOC, lists, and indexes.
Only update those generated files that have
FP_GenerateInclude set to True in their
associated FO_BookComponent objects.
True: update generated files
False: don’t update generated files
FS_UpdateBookNumbering
Update numbering in all the book’s documents.
True: update numbering
False: don’t update numbering
FS_UpdateBookOleLinks
Update OLE links in all the book’s documents.
True: update OLE links
False: don’t update OLE links
FS_UpdateBookText
References
Update text insets in all the book’s documents.
True: update text insets
False: don’t update text insets
FS_UpdateBookXRefs
Update cross-references in all the book’s documents.
True: update cross-references
False: don’t update cross-references
FS_UpdateBookInlineCompon
ents
Update mini table of contents in all documents within
a book.
True: update mini TOC.
False: don’t update mini TOC.
..............................................................................
IMPORTANT: The returned F_PropValsT structure references memory that is
allocated by the API. Use F_ApiDeallocatePropVals() to free this memory when
you are done with it.
..............................................................................
282
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiGetUpdateBookDefaultParams()
If F_ApiGetOpenDefaultParams() fails, the API sets the len field of the
returned structure to 0.
Example
The following code gets a default Update Book script with
F_ApiGetUpdateBookDefaultParams(). It modifies the script to instruct the
FrameMaker product to prompt the user if the book contains non-FrameMaker files. It
then uses the script to call F_ApiUpdateBook().
. . .
IntT i;
F_PropValsT script, *returnp = NULL;
F_ObjHandleT bookId;
bookId = F_ApiGetId(0, FV_SessionId, FP_ActiveBook);
if(!bookId)
return;
/* Get default property list. */
script = F_ApiGetUpdateBookDefaultParams();
/* Get indexes of properties and change them. */
i = F_ApiGetPropIndex(&script, FS_AlertUserAboutFailure);
script.val[i].propVal.u.ival = True;
i = F_ApiGetPropIndex(&script, FS_AllowNonFMFiles);
script.val[i].propVal.u.ival = FV_DoShowDialog;
/* Update the book */
F_ApiUpdateBook(bookId, &script, &returnp);
/* Free memory used by Update Book scripts. */
F_ApiDeallocatePropVals(&script);
F_ApiDeallocatePropVals(returnp);
. . .
See also
F_ApiUpdateBook().
FDK Programmer’s Reference 283
3
FDK Function Reference
F_ApiGetVal()
F_ApiGetVal()
F_ApiGetVal() queries a property of any type. If you know a property’s type, it is
normally easier to get its value by calling an F_ApiGetPropertyType() function,
such as F_ApiGetInt().
Synopsis
F_TypedValT F_ApiGetVal(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum);
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to query. If the object is a session, specify 0.
objId
The ID of the object whose property you want to query.
propNum
The property to query. Specify an API-defined constant, such as FP_FnNum.
Returns
The F_TypedValT structure for the specified property.
If F_ApiGetVal() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
Example
The following code prints the name of the current FrameMaker product:
. . .
F_TypedValT val;
val = F_ApiGetVal(FV_SessionId, FV_SessionId, FP_ProductName);
F_Printf(NULL,"The product name is %s.\n", val.u.sval);
. . .
284
FDK Programmer’s Reference
F_ApiGetVal()
...
FDK Function Reference
See also
F_ApiDeallocateStructureType() and F_ApiGetProps().
FDK Programmer’s Reference 285
3
FDK Function Reference
F_ApiGetWorkspaceName()
F_ApiGetWo rkspaceName()
F_ApiGetWorkspaceName() is used to get the name of the current workspace.
Synopsis
#include “fapi.h”
. . .
StringT str = F_ApiGetWorkspaceName();
Arguments
VoidT
Returns
StringT
Example
The following code gets the name of the current workspace.
. . .
StringT str = F_ApiGetWorkspaceName();
. . .
286
FDK Programmer’s Reference
F_ApiHypertextCommand()
3
...
FDK Function Reference
FDK Function Reference
F_ApiHypertextCommand()
F_ApiHypertextCommand() simulates a user-invoked hypertext command. Calling
F_ApiHypertextCommand() has the same effect as a user clicking on a hypertext
marker containing the specified text.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiHypertextCommand(F_ObjHandleT docId,
StringT hypertext);
Arguments
docId
The ID of the document that you want to act as the source of the hypertext
command.
hypertext
A hypertext command to execute, such as gotolink or previouslink.
You can specify any command that would be valid in a hypertext marker in
the document specified by docId.
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiHypertextCommand() fails, the API assigns the following value to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
Example
The following code executes a hypertext command to return to the previous hypertext
link:
. . .
F_ObjHandleT docId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
F_ApiHypertextCommand(docId, "previouslink");
. . .
FDK Programmer’s Reference 287
2
FDK Function Reference
F_ApiImport()
F_ApiImport()
F_ApiImport() imports text or graphics into a document.
F_ApiImport() allows you to specify a script (property list) telling the FrameMaker
product how to import text or graphics and how to deal with error and warning
conditions. For example, you can specify whether to import a file by reference or by
copy.
If you import a file by reference, F_ApiImport() creates an inset. The following
table summarizes the types of files you can import with F_ApiImport() and the
types of inset objects it creates when you import them by reference.
File type
Type of inset object F_ApiImport() creates
Graphics
FO_Inset
Text
FO_TiText
FO_TiTextTable
Frame binary document
FO_TiFlow
MIF
FO_TiFlow
When importing a graphic, you can specify that it be imported at its default resolution
by setting the FS_GraphicDpi property to 0 and setting the
FS_FitGraphicInSelectedRect property to False. If the graphic has no default
resolution, it is imported at 72 dpi.
For graphic objects, FrameMaker automatically determines whether the object-path is a
local path or an HTTP path and acts accordingly.For example, if the path is an HTTP
path, the object is downloaded before importing it in the file.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiImport(F_ObjHandleT enclosingDocId,
F_TextLocT *textLocP,
StringT filename,
F_PropValsT *importParamsp,
F_PropValsT **importReturnParamspp);
288
FDK Programmer’s Reference
F_ApiImport()
...
FDK Function Reference
Arguments
enclosingDocId
The ID of the document into which to import the file.
textLocP
The text location at which to import the file.
fileName
The full pathname of the file to import. For information on
how to specify pathnames on different platforms, see the FDK
Platform Guide for your platform.
importParamsp
A property list telling the FrameMaker product how to import
the file and how to respond to errors and other conditions. To
use the default list, specify NULL.
importReturnParamspp
A property list that provides information about how the
FrameMaker product imported the file. It must be initialized
before you call F_ApiImport().
..............................................................................
IMPORTANT: Always initialize the pointer to the property list that you specify for
importReturnParamspp to NULL before you call F_ApiImport().
..............................................................................
To get a property list to specify for the importParamsp parameter, use
F_ApiGetImportDefaultParams() or create the list from scratch. For a list of all
the properties an Import script property list can include, see
“F_ApiGetImportDefaultParams()” on page 194.
Returns
The ID of the inset that F_ApiImport() creates. Or 0 if F_ApiImport() imports
by copy or creates a graphic inset.
If F_ApiImport() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_SystemError
System error, such as an unreadable file or
insufficient memory
FE_BadParameter
The property list contained an invalid parameter
FE_BadFileType
The specified file exists, but it does not have the
correct file type
FE_MissingFile
The specified file does not exist
FE_NoSuchFlow
The script specifies an import flow that does not
exist
FE_FailedState
Internal error
FDK Programmer’s Reference 289
2
FDK Function Reference
F_ApiImport()
FA_errno value
Meaning
FE_CircularReference
Importing the specified file causes a circular
reference
FE_FileClosedByClients
The file was closed by a client before it could be
imported
The property list returned to importReturnParamspp has the properties shown in
the following table.
Property
Meaning and Possible Values
FS_ImportedFileName
A string specifying the source file’s pathname. If you scripted
FS_ShowBrowser, this pathname can be different from the
one you specified in the Import script.
FS_ImportNativeError
The error condition; normally the same value as FA_errno.
If the file is imported successfully, it is set to FE_Success.
See the table below for a list of possible values.
FS_ImportStatus
A bit field indicating what happened when the file was
imported. See the table below for a list of possible flags.
Both the FS_ImportNativeError property and the FA_errno global variable
indicate the result of a call to F_ApiImport(). The following table lists the possible
290
FDK Programmer’s Reference
F_ApiImport()
...
FDK Function Reference
status flags and the FA_errno and FS_ImportNativeError values associated
with them.
FS_ImportNativeError and
FA_errno values
FE_BadParameter,
FE_BadFileType,
FE_MissingFile,
FE_FailedState, or
FE_CanceledByClient
(file was not imported)
Possible FS_ImportStatus flags
FV_BadImportFileName: the specified source filename is
invalid
FV_BadImportFileType: the Import script specified a file
type different from the source file’s actual type
FV_BadImportScriptValue: the Import script contained an
invalid property value
FV_BadTextFileTypeHint: The file was a text file, and the string
in FS_FileTypeHint was not a valid import hint string. For
information on the syntax of this string, see “Syntax of
FP_ImportHint strings” on page 947.
FV_MissingScript: F_ApiImport() was called without a
script.
FV_DisallowedImportType: source file’s type disallowed
by script.
FV_NoMainFlow: script specified to import the main flow, but
the source file does not have a main flow.
FV_NoFlowWithSpecifiedName: script specified a flow
name that does not exist
FV_InsertionPointNotInText: the insertion point in the
enclosing document is not in text
FV_InsufficientMemory: there is insufficient memory to
import the source file
FV_BadEnclosingDocId: there is no open document with the
specified ID
FV_ImportFileNotReadable: the specified source file is
unreadable
FDK Programmer’s Reference 291
2
FDK Function Reference
F_ApiImport()
FS_ImportNativeError and
FA_errno values
FE_Success
Possible FS_ImportStatus flags
FV_ImportedByCopy: the source file was imported
by copy
FV_ImportedText: the source file is a text file
FV_ImportTextTable: the source file is a text file, which
was imported into a table.
FV_ImportedMIF: the source file is a MIF file
FV_ImportedMakerDoc: the source file is a FASL file.
FV_ImportedFilteredFile: the source file was filtered
FV_ImportedGraphicFile: the source file is a
graphics file
FV_ImportedSgmlDoc: the source file is an SGML document
FV_ImportedXmlDoc: the source file is an XML
document
FE_Cancel
FV_CancelFileText: the file is text, so the user or the Import
script canceled the Import operation
FV_CancelFileGraphic: the source file is a graphic, so the
user or the Import script canceled the Import operation
FV_CancelFileDoc: the file is a FASL file, so the user or the
script canceled the Import operation
FV_CancelFileSgml: the file is an SGML document, so the
user or the script canceled the Import operation
FV_CancelFileXML: the file is an XML document, so the user
or the script canceled the Import operation
FV_CancelFileMIF: the source file is a MIF file, so the user or
the script canceled the Import operation
FV_CancelFileFilterable: the source file is a filterable
file, so the user or the script canceled the Import operation
FV_InsertionPointInFootnote: the insertion point was
in a footnote and the import script specified to import the file as
a table, so the file could not be imported
FV_InsertionPointInTableCell: the insertion point was
in a table cell and the import script specified to import the file as
a table, so the file could not be imported
292
FDK Programmer’s Reference
F_ApiImport()
FS_ImportNativeError and
FA_errno values
...
FDK Function Reference
Possible FS_ImportStatus flags
FV_UserCanceledImport: the user canceled the Import
operation
FV_UserCanceledImportBrowser: the user canceled the
Import browser
To determine whether a particular FS_ImportStatus bit is set, use
F_ApiCheckStatus(). For more information, see “F_ApiCheckStatus()” on
page 92.
After you are done with the property lists you use to call F_ApiImport(), use
F_ApiDeallocatePropVals() to deallocate the memory they use. Calling
F_ApiImport() again also deallocates the memory.
FDK Programmer’s Reference 293
2
FDK Function Reference
F_ApiImport()
Example
The following code imports a graphic file, named agraphic.xwd, by reference.
. . .
F_PropValsT params, *returnParamsp = NULL;
F_ObjHandleT docId;
F_TextRangeT tr;
IntT i;
/* Get default import list. Return if it can’t be allocated. */
params = F_ApiGetImportDefaultParams();
if(params.len == 0) return;
/* Get current insertion point. Return if there isn’t one. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(0, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
/* Change properties to disallow nongraphic files. */
i = F_ApiGetPropIndex(&params, FS_DisallowDoc);
params.val[i].propVal.u.ival = True;
i = F_ApiGetPropIndex(&params, FS_DisallowMIF);
params.val[i].propVal.u.ival = True;
i = F_ApiGetPropIndex(&params, FS_DisallowPlainText);
params.val[i].propVal.u.ival = True;
/* Set properties to import graphic at default resolution*/
i = F_ApiGetPropIndex(&params, FS_GraphicDpi);
params.val[i].propVal.u.ival = 0;
i = F_ApiGetPropIndex(&params, FS_FitGraphicInSelectedRect);
params.val[i].propVal.u.ival = False;
F_ApiImport(docId, &tr.beg, "/tmp/agraphic.xwd",
&params, &returnParamsp);
if (F_ApiCheckStatus(returnParamsp, FV_BadImportFileType))
F_ApiAlert("File isn’t a graphic.", FF_ALERT_CONTINUE_NOTE);
/* Deallocate property lists. */
F_ApiDeallocatePropVals(&params);
F_ApiDeallocatePropVals(returnParamsp);
. . .
294
FDK Programmer’s Reference
F_ApiImportDoc()
...
FDK Function Reference
See also
“F_ApiCheckStatus()” on page 92, “F_ApiGetOpenDefaultParams()” on page 221,
“F_ApiPrintOpenStatus()” on page 377, and “F_ApiSimpleOpen()” on page 472.
F_ApiImportDoc()
F_ApiImportDoc() imports a FrameMaker document into another document.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiImportDoc(F_ObjHandleT enclosingDocId, const
F_TextLocT *textLoc, F_ObjHandleT sourceDocId, const F_PropValsT
*importParams, F_PropValsT **importReturnParamspp)
Arguments
enclosingDocId
The destination (enclosing) document into which the source document
is to be imported.
textLoc
Text location of the destination document.
sourceDocId
The ID of the source document to be imported
importParams
A property list telling the FrameMaker product how to import the file
and how to respond to errors and other conditions. To use the default
list, specify NULL.
importReturnPa
ramspp
A property list that provides information about how the FrameMaker
product imported the file. It must be initialized before you call
F_ApiImportDoc().
Returns
The ID of the inset that F_ApiImportDoc creates. Or 0 if F_ApiImportDoc
imports by copy or creates a graphic inset.
If F_ApiImportDoc fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid sourceDocId
FE_SystemError
System error, such as an unreadable file or
insufficient memory
FE_BadParameter
The property list contained an invalid parameter
FDK Programmer’s Reference 295
2
FDK Function Reference
F_ApiInitialize()
FA_errno value
Meaning
FE_BadFileType
The specified file exists, but it does not have the
correct file type
FE_MissingFile
The specified file does not exist
FE_NoSuchFlow
The script specifies an import flow that does not
exist
FE_FailedState
Internal error
FE_CircularReference
Importing the specified file causes a circular
reference
FE_FileClosedByClients
The file was closed by a client before it could be
imported
The property list returned to importReturnParamspp has the properties shown in
the following table.
Property
Meaning and Possible Values
FS_ImportedFileName
A string specifying the source file’s pathname. If you scripted
FS_ShowBrowser, this pathname can be different from the
one you specified in the Import script.
FS_ImportNativeError
The error condition; normally the same value as FA_errno.
If the file is imported successfully, it is set to FE_Success.
See the table below for a list of possible values.
FS_ImportStatus
A bit field indicating what happened when the file was
imported. See the table below for a list of possible flags.
F _ A p i I n i t i al i ze ( )
F_ApiInitialize() is a callback that you define in your client to respond to a
FrameMaker product attempting to initialize your client.
..............................................................................
IMPORTANT: F_ApiInitialize should be called for all APIs clients, including
filters and document reports. This enables filters and document reports to make the
F_ApiEnableUnicode(True) call necessary for enabling Unicode Mode. If
Unicode Mode isn’t enabled, sparm received in F_ApiNotify isn’t in Unicode
because the API runs in Compatibility Mode. For more information on Unicode Mode
296
FDK Programmer’s Reference
F_ApiInitialize()
...
FDK Function Reference
and Compatibility Mode, see the chapter, “Working with Unicode.”in the FDK
Programmer’s Reference.
..............................................................................
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiInitialize(initialization)
IntT initialization;
Arguments
initialization
A constant that indicates the type of initialization
The following table summarizes the different types of initializations and the
initialization constants FrameMaker products can use to call call
F_ApiInitialize().
When F_ApiInitialize() is
called
Initialization flag
FrameMaker product
starts with no special
options
After starting
FA_Init_First
All except document
reports and filters
FrameMaker product
starts with take-control
client
After starting
FA_Init_First
All except document
reports and filters
After all API clients
have finished processing
the FA_Init_First
initialization
FA_Init_TakeControl
Client that takes
control of the session
Document report chosen
from Document Reports
dialog box
After report is chosen
FA_Init_DocReport
The chosen document
report
Notification, menu
choice, or hypertext
command for a client
that has bailed out
When the menu item is
chosen, the hypertext
command is clicked, or
the notification should
be issued
FA_Init_Subsequent
Clients that have
bailed out and are
waiting for an event, a
menu choice, or a
hypertext command to
occur
Type of initialization
Clients that receive
initialization
Returns
VoidT
FDK Programmer’s Reference 297
2
FDK Function Reference
F_ApiInitListViewSearch()
Example
The following code displays a dialog box after the FrameMaker product is started:
. . .
VoidT F_ApiInitialize(initialization)
IntT initialization;
{
if (initialization == FA_Init_First)
F_ApiAlert("API client has started.", FF_ALERT_CONTINUE_NOTE);
}
. . .
See also
“F_ApiNotification()” on page 345.
F _ A p i I n i t L i s tVi ew S e a rc h ()
F_ApiInitListViewSearch() is used to search for text within a specified list in a
dialog.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiInitListViewSearch(F_ObjHandleT dialogId, intT
listViewId, IntT searchBoxId);
Arguments
dialogId
The ID of the dialog box.
listViewId
The ID of the list view control to be searched.
SearchBoxId
The ID of the search box control.
Returns
VoidT
298
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiIsEncodingSupported()
Example
The following code is used to search for text within a specified list in a dialog.
#define LISTVIEW_ID1
#define LISTVIEW_ID2
F_ObjHandleT dlgId;
...
F_ApiInitListViewSearch(dlgId, LISTVIEW_ID, SEARCHBOX_ID);
...
F_ApiIsEncodingSupported()
F_ApiIsEncodingSupported() checks whether the specified encoding is
supported for the current session. For example, unless FrameMaker is running on a
system that supports Japanese text, Japanese encoding is not supported.
Synopsis
#include "fapi.h"
. . .
BoolT F_ApiIsEncodingSupported(ConStringT encodingName);
Arguments
encodingName
The encoding you want to test.
Allowed values for encodingName are:
Value
Means
FrameRoman
Roman text
JISX0208.ShiftJIS
Japanese text
BIG5
Traditional Chinese text
GB2312-80.EUC
Simplified Chinese text
KSC5601-1992
Korean text
Returns
True if the specified encoding is supported for the current session; otherwise returns
False.
FDK Programmer’s Reference 299
2
FDK Function Reference
F_ApiLoadMenuCustomizationFile()
Example
The following code checks to see whether Japanese text is supported for the current
session:
. . .
BoolT isSupported;
isSupported = F_ApiIsEncodingSupported(
(ConString) "JISX0208.ShiftJIS");
. . .
F_Api LoadMenuCustomi zati onFil e ()
F_ApiLoadMenuCustomizationFile() loads a menu customization file. A menu
customization file is a text file containing statements that change the menus and
commands the user sees in the FrameMaker product. For example, a menu
customization file can change the name of a command or move a command from one
menu to another.
For information on writing menu customization files, see the online manual
Customizing FrameMaker products.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiLoadMenuCustomizationFile(StringT pathname,
BoolT silent);
Arguments
pathname
The pathname of the menu customization file to load. If you specify only a
filename, the function looks in the client directory. If silent is set to False,
the pathname specified by pathname is used as the default in the Menu
Customization File dialog box.
silent
Specifies whether to display the Menu Customization File dialog box and allow
the user to choose the file. To display the dialog box and allow the user to choose
the file, specify False. To use the file specified by pathname without asking
the user, specify True.
Returns
FE_Success if it succeeds, or an error code if an error occurs.
300
FDK Programmer’s Reference
F_ApiMakeTblSelection()
...
FDK Function Reference
If F_ApiLoadMenuCustomizationFile() fails, the API assigns one of the
following values to FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this operation or
fmbatch is running
FE_BadOperation
Parameters specify an invalid operation
FE_BadParameter
Parameter has an invalid value
FE_SystemError
System error
Example
The following code loads a menu customization file named mymenus.cfg, without
notifying the user:
. . .
F_ApiLoadMenuCustomizationFile("c:\\maker\\fmint\\mymenus.cfg",
True);
. . .
F _ A p i M a k eT b l S el e ct i o n ()
F_ApiMakeTblSelection() selects a range of cells in a table.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiMakeTblSelection(F_ObjHandleT docId,
F_ObjHandleT tableId,
IntT topRow,
IntT bottomRow,
IntT leftCol,
IntT rightCol);
FDK Programmer’s Reference 301
2
FDK Function Reference
F_ApiMakeTblSelection()
Arguments
docId
The ID of the document containing the table.
tableId
The ID of the table containing the rows to select.
topRow
The number of the first row in the selection. The rows are numbered from top
to bottom, starting with 0 (including heading rows). To select the entire table,
specify FF_SELECT_WHOLE_TABLE.
bottomRow
The number of the last row in the selection.
leftCol
The number of the leftmost column in the selection. The columns are
numbered from left to right, starting with 0.
rightCol
The number of the rightmost column in the selection.
To select an entire table, including the table title, set topRow to
FF_SELECT_WHOLE_TABLE. F_ApiMakeTblSelection() ignores the values for
the other parameters.
..............................................................................
IMPORTANT: F_ApiMakeTblSelection() can’t select different types of rows at
the same time, unless you set topRow to FF_SELECT_WHOLE_TABLE or you set
topRow and bottomRow to select one or more entire columns.
..............................................................................
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiMakeTblSelection() fails, the API assigns one of the following values to
FA_errno.
302
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid table ID
FE_BadOperation
Parameters specify an action that is invalid
FE_OutOfRange
Row or column specification not in table
FE_BadParameter
Parameter has an invalid value
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiManageConditionalExpressions()
Example
The following code selects the cells R1-C1 to R2-C2 in a table:
. . .
F_ObjHandleT docId, tblId;
/* Get the document and table IDs. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tblId = F_ApiGetId(FV_SessionId, docId, FP_FirstTblInDoc);
/* Select the cells. If row 0 is a heading row and
** row 1 is a body row, this call won’t work.
*/
F_ApiMakeTblSelection(docId, tblId, 0, 1, 0, 1);
. . .
F_ApiManageConditionalExpressions()
F_ApiManageConditionalExpressions() used to add, edit, or delete
conditional expressions to the current book. Applies to the options available in the
Add/Edit Conditional Tag dialog.
Synopsis
#include "fapi.h"
. . .
Void F_ApiManageConditionalExpressions (F_ObjHandleT bookId,
F_PropValsT *settingsp);
Arguments
bookId
The ID of the selected book.
settingsp
The value of the property to set.
Use the following are add, edit, and delete settings:
FDK Programmer’s Reference 303
2
FDK Function Reference
F_ApiMenuItemInMenu()
Property
Meaning
FS_AddEditExpre
ssions
String array of pair of strings (expression tag, expression definition)
to be added/edited in conditional expression catalog.
FS_DeleteExpres
sions
String array of expression tags to be deleted from conditional
expression catalog.
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiManageConditionalExpressions() fails, the API assigns one of the
following values to FA_errno.
FA_errno value
Meaning
FE_CannotAddEdi
tExpressionsInO
neOrMoreCompone
nts
Failed to Add/Edit the Expression on one or more book components
while using F_ApiManageCondiitonalExpressions(). See
FrameMaker Error pod for more details.
FE_BadBookId
Invalid book ID
F_ApiMenuItemInMenu()
F_ApiMenuItemInMenu() determines if a menu item or menu is on a menu or menu
bar.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiMenuItemInMenu (F_ObjHandleT menuId,
F_ObjHandleT menuitemId,
BoolT recursive);
304
FDK Programmer’s Reference
F_ApiMenuItemInMenu()
...
FDK Function Reference
Arguments
menuId
The menu or menu bar to search.
menuitemId
The ID of the menu item or menu to search for.
recursive
Specifies whether to search the submenus of the menu or menu bar
specified by menuId. Specify True to search them.
Returns
The ID of the menu on which F_ApiMenuItemInMenu() found the object specified
by menuitemId, or 0 if it did not find the object.
If F_ApiMenuItemInMenu() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this operation or
fmbatch is running
FE_BadOperation
Parameters specify an invalid operation
FE_BadParameter
Parameter has an invalid value
FDK Programmer’s Reference 305
2
FDK Function Reference
F_ApiMenuItemInMenu()
Example
The following code searches the Edit menu and its submenus for the Copy menu item:
. . .
F_ObjHandleT copyCmdId, menuId, returnId;
menuId = F_ApiGetNamedObject(FV_SessionId, FO_Menu,
"EditMenu");
copyCmdId = F_ApiGetNamedObject(FV_SessionId, FO_Command,
"Copy");
returnId = F_ApiMenuItemInMenu(menuId, copyCmdId, True);
if(returnId == menuId)
F_ApiAlert("Copy is on the Edit menu." ,
FF_ALERT_CONTINUE_NOTE);
else if (!returnId)
F_ApiAlert("Copy is not on the Edit menu." ,
FF_ALERT_CONTINUE_NOTE);
else
F_ApiAlert("Copy is on a pull-right of the Edit menu.",
FF_ALERT_CONTINUE_NOTE);
. . .
See also
“F_ApiGetNamedObject()” on page 216.
Stru cture d
F_ApiMergeIntoFirst()
F_ApiMergeIntoFirst() merges the selected structural elements into the first
element in the selection.
..............................................................................
IMPORTANT: At least two structural elements must be selected when
F_ApiMergeIntoFirst() is called.
..............................................................................
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiMergeIntoFirst(F_ObjHandleT docId);
306
FDK Programmer’s Reference
F_ApiMenuItemInMenu()
...
FDK Function Reference
Arguments
docId
The ID of the document containing the selected elements
Returns
VoidT
If F_ApiMergeIntoFirst() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product isn’t supported
FE_BadDocId
Invalid document ID
FE_BadSelectionForOperation
Current text selection is invalid for this operation
Example
The following code merges the selected structural elements in the active document:
. . .
F_ObjHandleT docId;
/* Get the document ID. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
/* Merge the elements. */
F_ApiMergeIntoFirst(docId);
. . .
See also
“F_ApiMergeIntoLast()”.
Stru cture d
F _ A p i M e r g e I n t o L a st ( )
F_ApiMergeIntoLast() merges the selected structural elements into the last
element in the selection.
..............................................................................
IMPORTANT: At least two structural elements must be selected when
F_ApiMergeIntoLast() is called.
..............................................................................
FDK Programmer’s Reference 307
2
FDK Function Reference
F_ApiMenuItemInMenu()
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiMergeIntoLast(F_ObjHandleT docId);
Arguments
docId
The ID of the document containing the selected elements
Returns
VoidT
If F_ApiMergeIntoLast() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product isn’t supported
FE_BadDocId
Invalid document ID
FE_BadSelectionForOperation
Current text selection is invalid for this operation
Example
The following code merges the selected structural elements in the active document:
. . .
F_ObjHandleT docId;
/* Get the document ID. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
/* Merge the elements. */
F_ApiMergeIntoLast(docId);
. . .
See also
“F_ApiMergeIntoFirst()” on page 306.
308
FDK Programmer’s Reference
F_ApiMessage()
...
FDK Function Reference
F_ApiMessage()
F_ApiMessage() is a callback that you can define in your client. The FrameMaker
product calls F_ApiMessage() when the user clicks a hypertext marker containing
the text message apiclient, where apiclient is the name under which your
client is registered with the FrameMaker product. For information on creating hypertext
markers that message FDK clients, see “Using hypertext commands in your client’s
user interface” in the FDK Programmer’s Guide.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiMessage(StringT message,
F_ObjHandleT docId,
F_ObjHandleT objId);
Arguments
message
The string specified by the hypertext command. It is NULL if the user clicked an
inset.
docId
The ID of the document containing the hypertext marker or the inset.
objId
The ID of the hypertext marker or the inset. If the user chooses your client from
the Inset Editors scroll list, it is 0.
Returns
VoidT
Example
See “Responding to message apiclient commands” and “Responding to the user
launching your inset editor” in the FDK Programmer’s Guide.
See also
“F_ApiHypertextCommand()” on page 287 and “F_ApiNotify()” on page 355.
F_ApiModalDialog()
F_ApiModalDialog() displays a dialog resource as a modal dialog box. This is the
most common type of dialog box. The user must close the dialog box before continuing,
usually by clicking OK or Cancel.
FDK Programmer’s Reference 309
2
FDK Function Reference
F_ApiModalDialog()
..............................................................................
IMPORTANT: When you are through with it, you should always close a dialog resource
via F_ApiClose(). Also, in some circumstances you might want a custom dialog box
to be modal, and in others you might want it to be modeless. To do this, you should
create two separate dialog resources. Then you should always call one with
F_ApiModalDialog(), and call the other with F_ApiModelessDialog().
..............................................................................
Synopsis
#include "fapi.h"
. . .
IntT F_ApiModalDialog(IntT dlgNum,
F_ObjHandleT dlgId);
Arguments
dlgNum
A unique number to identify the dialog box. The API passes this number
to your client’s F_ApiDialogEvent() callback when there is a user
action in the dialog box. If you don’t want the API to call your client’s
F_ApiDialogEvent() callback when there is a user action, set
dlgNum to 0.
dlgId
The ID of the dialog resource to display.
After calling F_ApiModalDialog(), you must call F_ApiClose() to free memory.
Returns
FE_Success or a nonzero value if the user requested help.
Example
The following code displays a dialog named mydlg as a modal dialog box:
. . .
#define MY_DLG 1
F_ObjHandleT dlgId;
/* Open the resource and display the dialog box. */
dlgId =
Resource(FO_DialogResource, "mydlg");
F_ApiModalDialog(MY_DLG, dlgId);
. . .
F_ApiClose (dlgId, FF_CLOSE_MODIFIED);
. . .
310
FDK Programmer’s Reference
F_ApiModelessDialog()
...
FDK Function Reference
See also
“F_ApiModelessDialog()” on page 311, “F_ApiDialogEvent()” on page 151, and
“F_ApiOpenResource()” on page 370.
F_ApiModelessDialog()
F_ApiModelessDialog() displays a dialog resource as a modeless
dialog box. Modeless dialog boxes allow the user to switch between the dialog box and
the window that created it. Modeless dialog boxes are preferred when it would be
convenient to keep the dialog box displayed for a while.
..............................................................................
IMPORTANT: When you are through with it, you should always close a dialog resource
via F_ApiClose(). Also, in some circumstances you might want a custom dialog box
to be modal, and in others you might want it to be modeless. To do this, you should
create two separate dialog resources. Then you should always call one with
F_ApiModalDialog(), and call the other with F_ApiModelessDialog().
..............................................................................
Synopsis
#include "fapi.h"
. . .
IntT F_ApiModelessDialog(IntT dlgNum,
F_ObjHandleT dlgId);
Arguments
dlgNum
A unique number to identify the dialog box. The API passes this number
to your client’s F_ApiDialogEvent() callback when there is a user
action in the dialog box.
dlgId
The ID of the dialog resource to display.
After calling F_ApiModelessDialog(), you must call F_ApiClose() to free
memory.
Returns
FE_Success or an error code if the dialog resource couldn’t be displayed.
FDK Programmer’s Reference
311
2
FDK Function Reference
F_ApiMoveComponent()
Example
The following code displays a dialog named mydlg as a modeless dialog box:
. . .
#define MY_DLG 1
F_ObjHandleT dlgId;
/* Open the resource and display the dialog box. */
dlgId = F_ApiOpenResource(FO_DialogResource, "mydlg");
F_ApiModelessDialog(MY_DLG, dlgId);
. . .
F_ApiClose (dlgId, FF_CLOSE_MODIFIED);
. . .
See also
“F_ApiModalDialog()” on page 309, “F_ApiDialogEvent()” on page 151, and
“F_ApiOpenResource()” on page 370.
F_ApiMoveComponent()
Moves a book component within the book.
Synopsis
#include "fapi.h"
...
VoidT F_ApiMoveComponent(F_ObjHandleT bookId,
F_ObjHandleT compId,
IntT moveAction);
Arguments
bookId
compId
The ID of the book that contains the component
moveAction
Specifies the action to move the component
The ID of the book component that is to be
moved.
You can specify the following values for moveAction.
312
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiNetLibSetAuthFunction()
moveAction
Meaning
FA_COMPONENT_MOVEUP
Move the component up at the same hierarchical
level.
FA_COMPONENT_MOVEDOWN Move the component down at the same
hierarchical level.
FA_COMPONENT_PROMOTE
Move the component to a higher/outer level in
hierarchy.
FA_COMPONENT_DEMOTE
Move the component to a lower/inner level in
hierarchy.
Returns
VoidT
Example
The following code moves up a book component.
. . .
F_ObjHandleT bookId;
F_ObjHandleT comp1Id, comp2Id;
/* Get ID of active book and its second component. */
bookId = F_ApiGetId(0, FV_SessionId, FP_ActiveBook);
comp1Id = F_ApiGetId(FV_SessionId, bookId,
FP_FirstComponentInBook);
comp2Id = F_ApiGetId(bookId, comp1Id,
FP_NextComponentInBook);
/* Move the component. */
F_ApiMoveComponent(bookId, comp2Id,
FA_COMPONENT_MOVEUP);
...
F_ApiNetLib SetAu thFu nction ()
Sets a callback function that is called for setting the username/password information
before performing the NetLib related authentication.
FDK Programmer’s Reference 313
2
FDK Function Reference
F_ApiNetLibSetAuthFunction()
Synopsis
#include "fapi.h"
...
VoidT F_ApiNetLibSetAuthFunction(VoidT (*p_auth_func)(ConStringT
url,
StringT username, StringT password,
IntT *cancelp) );
Arguments
p_auth_func
Callback function that sets the username and
password information for the NetLib related
authentication.
:
NOTE: After registering the callback function, whenever NetLib needs authentication,
it calls this function with the server’s URL as ‘url’ parameter. This function checks the
URL string and accordingly fills-in the username and password fields and sets *cancelp
to 0. If you want to cancel the authentication request from NetLib, set *cancelp to 1. In
this case, set the username and password to empty strings.
To unregister the callback function, call F_ApiNetLibSetAuthFunction() with
NULL as the parameter. Then, FrameMaker’s standard NetLib authentication dialog is
displayed for the purpose.
The server authentication fails if the strings are set with an invalid username or
password through this callback function. NetLib calls the function again and this time
too, the function sets the wrong authentication information. This process will go on and
FrameMaker will hang. Therefore, use some mechanism (like counters) in the callback
function to avoid such a condition. For example, if the authentication requests for a
particular server reaches a certain number of times (say 3), cancel the later requests for
that server.
Returns
VoidT
Example
The following code sets the authentication callback function as ‘SplAuthFunction()’.
The callback function matches the URL provided and fills in the username & password
314
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiNetLibSetAuthFunction()
accordingly.
. . .
F_ApiNetLibSetAuthFunction(SplAuthFunction);
. . .
. . .
VoidT SplAuthFunction(ConStringT url, StringT username,
StringT password, IntT *cancelp)
{
static int attempts_srv1 = 0;
static int attempts_srv2 = 0;
// send authentication information for first three
attempts only
if (attempts_srv1 < 3 &&
F_StrCmp(url, (ConStringT)"hostname:8080") == 0)
{
F_StrCpy(username, (ConStringT)"user123");
F_StrCpy(password, (ConStringT)"pass234");
*cancelp = 0;
attempts_srv1++;
}
else if (attempts_srv2 < 3 &&
F_StrCmp(url, (ConStringT)"cmsserver") == 0)
{
F_StrCpy(username, (ConStringT)"Admin");
F_StrCpy(password, (ConStringT)"Password");
*cancelp = 0;
attempts_srv2++;
}
else
{
F_StrCpy(username, (ConStringT)"");
F_StrCpy(password, (ConStringT)"");
*cancelp = 1;
attempts_srv1 = 0;
FDK Programmer’s Reference 315
2
FDK Function Reference
F_ApiNetLibStat()
attempts_srv2 = 0;
}
}
. . .
F_ApiNetLibStat()
Checks for the existence of a WebDAV file at a specified URL.
Synopsis
#include "fapi.h"
...
StatusT F_ApiNetLibStat (ConStringT url)
Arguments
url
Location of the WebDAV file.
Returns
Returns True if the file exists. Else it returns False.
F_ApiNewAnchoredFormattedObject()
F_ApiNewAnchoredFormattedObject() can create the following types of
anchored objects:

FO_Var

FO_XRef

FO_Tbl
F_ApiNewAnchoredFormattedObject() inserts the object at the specified
location in text. It uses arbitrary default properties for the new object. After you have
created the object, you can use the F_ApiSetPropertyType() functions to change
its properties.
If you call F_ApiNewAnchoredFormattedObject() to create a table, it uses the
default numbers of rows and columns from the specified Table Catalog format. To use
the default Table Catalog format for a new table, set format to NULL. To specify the
number of rows and columns when you create a table, use F_ApiNewTable().
316
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiNewAnchoredFormattedObject()
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiNewAnchoredFormattedObject(F_ObjHandleT docId,
IntT objType,
StringT format,
F_TextLocT *textLocp);
Arguments
docId
The ID of the document to which to add the object
objType
The type of object to create (for example, FO_XRef)
format
The string that specifies the object’s format (for example, Heading & Page
for a cross-reference, Format A for a table, or Current Date (Long)
for a variable)
textLocp
The text location at which to insert the anchored object
The F_TextLocT structure is defined as:
typedef struct {
F_ObjHandleT objId; /* ID of the paragraph or text line */
IntT offset; /* From beginning of paragraph or text line */
} F_TextLocT;
Returns
The ID of the new anchored object, or 0 if an error occurs.
If F_ApiNewAnchoredFormattedObject() fails, the API assigns one of the
following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_NotTextObject
Object specified for text location is not a paragraph (FO_Pgf)
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in the
specified paragraph or text line
FE_BadNew
Object can’t be created; the format specified by format may not
exist
FDK Programmer’s Reference 317
2
FDK Function Reference
F_ApiNewAnchoredObject()
Example
The following code adds a Current Date (Short) variable at the insertion point
(or the beginning of the text selection) of the active document:
. . .
F_TextRangeT tr;
F_ObjHandleT docId, variableId;
/* Get the insertion point. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if (tr.beg.objId == 0) return;
/* Insert the variable. */
variableId = F_ApiNewAnchoredFormattedObject(docId, FO_Var,
"Current Date (Short)", &tr.beg);
. . .
See also
“F_ApiNewAnchoredObject()”.
F_ApiNewAnchoredObject()
F_ApiNewAnchoredObject() can create any of the following anchored objects:

FO_AFrame

FO_Fn

FO_Marker

FO_TiApiClient

FO_Tbl
F_ApiNewAnchoredObject() inserts the object at the specified location in text. It
uses arbitrary default properties for the new object. After you have created the object,
you can use the F_ApiSetPropertyType() functions to change its properties.
Tables created by F_ApiNewAnchoredObject() have a single column and a single
body row. It is usually easier to use F_ApiNewTable() to create tables.
318
FDK Programmer’s Reference
F_ApiNewAnchoredObject()
...
FDK Function Reference
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiNewAnchoredObject(F_ObjHandleT docId,
IntT objType,
F_TextLocT *textlocp);
Arguments
docId
The ID of the document to which to add the object
objType
The type of object to create (for example, FO_Marker or FO_Fn)
textlocp
The text location at which to insert the anchored object
The F_TextLocT structure is defined as:
typedef struct {
F_ObjHandleT objId; /* ID of the paragraph or text line */
IntT offset; /* From beginning of paragraph or text line */
} F_TextLocT;
Returns
The ID of the new anchored object, or 0 if an error occurs.
If F_ApiNewAnchoredObject() fails, the API assigns one of the following values
to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadNew
Anchored object can’t be created
FE_BadObjId
Invalid object ID
FE_BadOperation
Function call specified an illegal operation
FE_NotTextObject
Object specified for the text location is not a paragraph (FO_Pgf)
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in the
specified paragraph or text line
FDK Programmer’s Reference 319
2
FDK Function Reference
F_ApiNewAnchoredObject()
Example
The following code inserts a new anchored frame at the beginning of a paragraph:
. . .
F_TextRangeT tr;
F_ObjHandleT docId, afrmId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
/* Insert the frame. */
afrmId = F_ApiNewAnchoredObject(docId, FO_AFrame, &tr.beg);
. . .
See also
“F_ApiNewAnchoredFormattedObject()” on page 316.
Stru cture d
F_ApiNewBookComponentInHierarc hy()
F_ApiNewBookComponentInHierarchy() inserts a book component at a
specified position in a structured book.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiNewBookComponentInHierarchy(
F_ObjHandleT bookId;
StringT compName,
F_ElementLocT *elemLocp);
Arguments
bookId
The ID of the book to add the component to
compName
The name of the component
elemLocp
The position at which to add the new element
..............................................................................
IMPORTANT: The book you specify for bookId must already be structured.
..............................................................................
320
FDK Programmer’s Reference
F_ApiNewAnchoredObject()
...
FDK Function Reference
Returns
The ID of the new element that corresponds to the book component, or 0 if an error
occurs.
If F_ApiNewBookComponentInHierarchy() fails, the API assigns one of the
following values to FA_errno.
FA_errno value
Meaning
FE_BadBookId
Invalid book ID
FE_BadCompPath
Component name specified for compName is invalid
FE_BadNew
The object can’t be created
FE_BookUnStructured
Specified book is unstructured
Example
The following code adds a component to a book:
. . .
F_ObjHandleT bookId, elemId;
F_ElementLocT elemLoc;
/* Get ID of active book and its highest level element. */
bookId = F_ApiGetId(0, FV_SessionId, FP_ActiveBook);
elemLoc.childId = F_ApiGetId(FV_SessionId, bookId,
FP_HighestLevelElement);
elemLoc.parentId = 0;
elemLoc.offset = 0;
/* Insert the new element. */
elemId = F_ApiNewBookComponentInHierarchy(bookId, "Chapter1",
&elemLoc);
. . .
FDK Programmer’s Reference 321
2
FDK Function Reference
F_ApiNewBookComponentOfTypeInHierarchy()
See also
“F_ApiNewElementInHierarchy()” on page 326 and “F_ApiNewSeriesObject()” on
page 336.
F_ApiNewBookComponentOfTypeInHierarc hy()
Inserts a book component of a specified type at a specified position in a structured
FrameMaker book.
Synopsis
#include "fapi.h"
...
F_ObjHandleT F_ApiNewBookComponentOfTypeInHierarchy(F_ObjHandleT
bookId,
ConStringT compName,
IntT compType,
const F_ElementLocT *elemLocp);
Arguments
You can specify the following values for compType.
compType
Meaning
FV_BK_FOLDER
Folder type book component.
FV_BK_GROUP
Group type book component.
Returns
The ID of the new element that corresponds to the book component, or 0 if an error
occurs.
If F_ApiNewBookComponentOfTypeInHierarchy() fails, the API assigns one of
the following values to FA_errno.
322
FA_errno value
Meaning
FE_BadBookId
Invalid book ID.
FE_BadParameter
Invalid compType.
FE_BadNew
The object can’t be created.
FE_BookUnStructured
Specified book is unstructured.
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiNewBookComponentOfTypeInHierarchy()
Example
The following code adds a component of type folder to a book.
. . .
F_ObjHandleT bookId, elemId;
F_ElementLocT elemLoc;
/* Get ID of active book and its highest level element. */
bookId = F_ApiGetId(0, FV_SessionId, FP_ActiveBook);
elemLoc.childId = F_ApiGetId(FV_SessionId, bookId,
FP_HighestLevelElement);
elemLoc.parentId = 0;
elemLoc.offset = 0;
/* Insert the new element. */
elemId = F_ApiNewBookComponentOfTypeInHierarchy(bookId,
"TechDoc Folder", FV_BK_FOLDER,
&elemLoc);
. . .
Stru cture d
F_ApiNewElement()
F_ApiNewElement() creates a structural element (FO_Element) in a structured
document.
F_ApiNewElement() inserts the new element at the specified location in text, using
the specified element definition.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiNewElement(F_ObjHandleT docId,
F_ObjHandleT elemDefId,
F_TextLocT *textLocp);
FDK Programmer’s Reference 323
2
FDK Function Reference
F_ApiNewBookComponentOfTypeInHierarchy()
Arguments
docId
The ID of the document to which to add the element
elemDefId
The ID of the element definition for the new element
textLocp
The text location at which to insert the new element
The F_TextLocT structure is defined as:
typedef struct {
F_ObjHandleT objId; /* ID of the paragraph or text line */
IntT offset; /* From beginning of paragraph or text line */
} F_TextLocT;
For object (noncontainer) elements, F_ApiNewElement() inserts the appropriate
type of object for the element. If there is a matching format rule,
F_ApiNewElement() uses it to format the object. Otherwise, it uses one of the
following default formats:
Object type
Object inserted
Format used if no matching
format rule exists
FV_FO_XREF
Cross-reference
Undefined XRef
FV_FO_EQN
Equation
medium
FV_FO_MARKER
Marker
Type 11
FV_FO_TBL
Table with the format
and number of rows and
columns specified by the
table format
Format A if it exists;
otherwise, a table with a
heading row, 8 body rows, a
footing row, and 5 columns
FV_FO_SYS_VAR
Variable
Filename (Long)
FV_FO_GRAPHIC
A centered 1.0-inch by
1.0-inch anchored frame
below the current
position; cropped is off,
and floating is on
Returns
The ID of the new element, or 0 if an error occurs.
324
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiNewBookComponentOfTypeInHierarchy()
If F_ApiNewElement() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadNew
Object can’t be created
FE_BadObjId
Invalid object ID
FE_NotTextObject
Object specified for the text location isn’t a paragraph (FO_Pgf) or
a text line (FO_TextLine)
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in the
specified paragraph or text line
Example
See “Creating objects” in the FDK Programmer’s Guide.
FDK Programmer’s Reference 325
2
FDK Function Reference
F_ApiNewBookComponentOfTypeInHierarchy()
See also
“F_ApiUnWrapElement()” on page 486.
Stru cture d
F_ApiNewElementInHierarchy()
F_ApiNewElementInHierarchy() creates a structural element (FO_Element
object) at a specified location in the element hierarchy of a structured document or
book.
To create the root element for a book, you must use
F_ApiNewElementInHierarchy(); you can’t use F_ApiNewElement().
However, you can’t use F_ApiNewElementInHierarchy() to add elements to an
unstructured document. You must structure the document first by adding a root element
with F_ApiNewElement().
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiNewElementInHierarchy(F_ObjHandleT docId,
F_ObjHandleT elemDefId,
F_ElementLocT *elemLocp);
Arguments
docId
The ID of the document or book to add the element to
elemDefId
The ID of the element definition for the new element
elemLocp
The location at which the element is inserted
For object (noncontainer) elements, F_ApiNewElementInHierarchy() inserts the
appropriate type of object for the element. If there is a matching format rule,
F_ApiNewElementInHierarchy() uses it to format the object. Otherwise, it uses
one of the following default formats:
326
Object type
Object inserted
Format used if no matching
format rule exists
FV_FO_XREF
Cross-reference
Undefined XRef
FV_FO_EQN
Equation
medium
FV_FO_MARKER
Marker
Type 11
FDK Programmer’s Reference
...
FDK Function Reference
F_ApiNewBookComponentOfTypeInHierarchy()
Object type
Object inserted
Format used if no matching
format rule exists
FV_FO_TBL
Table with the format
and number of rows and
columns specified by the
table format
Format A if it exists;
otherwise, a table with a
heading row, 8 body rows, a
footing row, and 5 columns
FV_FO_SYS_VAR
Variable
Filename (Long)
FV_FO_GRAPHIC
A centered 1.0-inch by
1.0-inch anchored frame
below the current
position
Returns
The ID of the new element, or 0 if an error occurs.
If F_ApiNewElementInHierarchy() fails, the API assigns one of the following
values to FA_errno.
FA_errno value
Meaning
FE_BadBookId
Invalid book (FO_Book object) ID
FE_BadObjId
Invalid element definition (FO_ElementDef object) ID
FE_BadInsertPos
elemLocP specifies an invalid place to insert the element; for
example, it specifies a position before the highest element in the
flow
FDK Programmer’s Reference 327
2
FDK Function Reference
F_ApiNewGraphicObject()
Example
The following code adds a Para element at the insertion point, or the beginning of the
current element selection:
. . .
F_ElementRangeT elemSelect;
F_ObjHandleT docId, elemId, paraEdefId;
/* Get ID of active document and the Para element definition. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
paraEdefId = F_ApiGetNamedObject(docId, FO_ElementDef, "Para");
/* Get current element selection in active document. */
elemSelect = F_ApiGetElementRange(FV_SessionId, docId,
FP_ElementSelection);
if(elemSelect.beg.parentId == 0 || paraEdefId == 0)return;
/* Insert the new element. */
elemId = F_ApiNewElementInHierarchy(docId, paraEdefId,
&elemSelect.beg);
. . .
F_ApiNewGraphicObject()
F_ApiNewGraphicObject() creates the following types of graphic objects:

FO_Arc

FO_Ellipse

FO_Flow 1

FO_Group

FO_Inset

FO_Line

FO_Math

FO_Polyline

FO_Polygon

FO_Rectangle
.................................
1. To create a flow, you must create a text frame. See “Creating flows” in the FDK Programmer’s Guide.
328
FDK Programmer’s Reference
F_ApiNewGraphicObject()

FO_RoundRect

FO_TextFrame

FO_TextLine

FO_UnanchoredFrame
...
FDK Function Reference
To create an anchored frame, use F_ApiNewAnchoredObject().
If there is more than one object within the parent frame,
F_ApiNewGraphicObject() adds the new API graphic object to the end of the
linked list of child objects. That is, it puts it in the front of the back-to-front draw order.
It automatically takes care of updating the object’s FP_PrevGraphicInFrame and
FP_NextGraphicInFrame properties. F_ApiNewGraphicObject() gives the
new API graphic object a set of arbitrary default properties. For example, FP_LocX
and FP_LocY are both 0. After you have created the object, you can use the
F_ApiSetPropertyType() functions to change its properties.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiNewGraphicObject(F_ObjHandleT docId,
IntT objType,
F_ObjHandleT parentId);
Arguments
docId
The ID of the document in which to create the new object
objType
The type of API graphic object to create (for example, FO_Rectangle or
FO_Line)
parentId
The ID of the parent frame in which to create the object
Returns
The ID of the new graphic object, or 0 if an error occurs.
If F_ApiNewGraphicObject() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FDK Programmer’s Reference 329
2
FDK Function Reference
F_ApiNewInlineComponentOfType()
FA_errno value
Meaning
FE_NotFrame
Specified parent object is not a frame
FE_BadNew
Object can’t be created
Example
The following code creates an ellipse and a text frame within the selected frame:
. . .
F_ObjHandleT docId, parentId, ellpsId, tFramId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
parentId = F_ApiGetId(FV_SessionId,
docId, FP_FirstSelectedGraphicInDoc);
if ((F_ApiGetObjectType(docId, parentId) != FO_AFrame) &&
(F_ApiGetObjectType(docId, parentId) != FO_UnanchoredFrame))
{
F_ApiAlert("Select a frame first.", FF_ALERT_CONTINUE_WARN);
return;
}
ellpsId = F_ApiNewGraphicObject(docId, FO_Ellipse, parentId);
tFramId = F_ApiNewGraphicObject(docId, FO_TextFrame, parentId);
. . .
For an example of how to create a polygon, see “F_ApiSetPoints()” on page 436.
See also
“F_ApiNewAnchoredObject()” on page 318, “F_ApiNewNamedObject()”, and
“F_ApiNewSeriesObject()” on page 336.
F_ApiNewInlineComponentOfType()
F_ApiNewInlineComponentOfType() creates an inline component.
NOTE: Current only one type of inline component exists, and that is the mini-TOC.
Synopsis
#include "fapi.h"
. . .
F_ApiNewInlineComponentOfType (F_ObjHandleT docId, IntT
inlineCompType, const F_StringsT *tags, BoolT hyperLinks, const
F_TextLocT *textLocp);
330
FDK Programmer’s Reference
F_ApiNewKeyCatalog()
...
FDK Function Reference
Arguments
docId
The ID of the document in which to create the new object
inlineCompType
Type of inline component.
Presently only one type exists: FV_MiniTOC
tags
Paragraph tags to include for the inline component
hyperLinks
Flag that specifies if hyperlinks need to be created in the inline
component.
textLocP
Text location in docId at which to create the inline component.
Returns
Void
F_ApiNewKeyCatalog()
Creates a new key catalog with the specified 'tag'.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiNewKeyCatalog(StringT tag)
Arguments
tag
The tag of the new Key Catalog being created.
Returns
Returns the handle of the newly created key catalog.
If F_ApiNewKeyCatalog() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadName
The tag provided is not valid.
FE_DupName
A key catalog for the tag provided already exists.
F_ApiNewKeyDefinition()
Adds a new key definition to the specified key catalog.
FDK Programmer’s Reference 331
2
FDK Function Reference
F_ApiNewKeyDefinition()
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiNewKeyDefinition(F_ObjHandleT keyCatalogId, StringT
key, StringT href, IntT srcType, StringT srcFile, IntT flags)
Arguments
keyCatalogId
The ID of the Key Catalog to add the key definiton to.
key
The tag of the key for which the key definition is being added.
href
The complete path of the file that the key refers to.
srcType
The type of the file that contains the key definition. See the table
below for a list of values.
srcFile
The complete path of the file that contains the key definition.
flags
Bit flags specifying information about the key definition. See the
table below for a list of flags.
srcType can have one of the following values:
srcType
Meaning
FV_KeySrcTypeNone
Source file type not specified.
FV_KeySrcTypeDitamap
Source file is a DITA Map.
You can OR the following bit-flags into flags:
Bit mask
Meaning
FF_DUPLICATE_KEY_DEFINITION
The specified key definiton is duplicate
(that is, it already exists in the Key Catalog)
and will not be used as active definition for
resolving keys.
FF_FOUND_IN_REFERENCED_FILE
FF_INVALID_KEY
332
FDK Programmer’s Reference

The specified key definiton is contained
in a file referenced directly or indirectly
from the file that contains the key
definition (srcFile).
The specified key definiton is invalid due to
some reason but will still be kept in the Key
Catalog.
F_ApiNewNamedObject()
...
FDK Function Reference
Returns
If F_ApiNewKeyDefinition() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadObjId
The ID provided does not specify a Key Catalog.
FE_BadKey
The Key provided is not valid.
FE_KeyDefinitionAlreadyE
xists
The definition for the specified key is already available
in the Key Catalog and the key definition provided is
not duplicate.
F_ApiNewNamedObject()
F_ApiNewNamedObject() can create the following named objects:

FO_Book

FO_CharFmt

FO_CombinedFontDefn

FO_Color

FO_Command

FO_CondFmt

FO_ElementDef

FO_FmtChangeList

FO_MasterPage

FO_Menu

FO_MenuItemSeparator

FO_PgfFmt

FO_RefPage

FO_RulingFmt

FO_TblFmt

FO_VarFmt

FO_XRefFmt
FDK Programmer’s Reference 333
2
FDK Function Reference
F_ApiNewNamedObject()
F_ApiNewNamedObject() uses arbitrary default properties for the objects it creates.
After you have created the object, you can use the F_ApiSetPropertyType()
functions to change its properties.
..............................................................................
IMPORTANT: When you create a new element definition, it does not appear in the
Element Catalog unless you set FP_ElementInCatalog to True.
..............................................................................
..............................................................................
IMPORTANT: When you create a new book and specify a pathname, you must specify an
absolute pathname for the name argument. To create an untitled book, pass an empty
string for the name argument.
..............................................................................
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiNewNamedObject(F_ObjHandleT docId,
IntT objType,
StringT name);
Arguments
docId
The ID of the document to which to add the object
objType
The type of object to create (for example, FO_MasterPage or FO_PgfFmt)
name
The name to give to the new object
Returns
The ID of the new named object, or 0 if an error occurs.
If F_ApiNewNamedObject() fails, the API assigns one of the following values to
FA_errno.
334
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name for the new object is invalid
FE_BadNew
Object can’t be created
FE_DupName
Specified name for the new object belongs to an existing object
FDK Programmer’s Reference
F_ApiNewProject()
...
FDK Function Reference
Example
The following code creates a new paragraph format named MyPgfFormat and a new
master page named MyPg:
. . .
F_ObjHandleT docId, pgfFmtId, mstrpgId;
/* Get ID of active document. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
/* Create the paragraph format and master page. */
pgfFmtId = F_ApiNewNamedObject(docId, FO_PgfFmt, "MyPgfFormat");
mstrpgId = F_ApiNewNamedObject(docId, FO_MasterPage, "MyPg");
. . .
See also
“F_ApiNewAnchoredObject()” on page 318, “F_ApiNewGraphicObject()” on
page 328, and “F_ApiNewSeriesObject()”.
F_ApiNewProject()
F_ApiNewProject() creates a new project.
Synopsis
#include "fapi.h"
. . . )
StringT F_ApiNewProject FARGS(ConStringT strProjectName,
ConStringT strRootFolderName);
Arguments
strProjectName
The name of the project.
strRootFolderName
The folder location to save the project.
Returns
StringT
FDK Programmer’s Reference 335
2
FDK Function Reference
F_ApiNewSeriesObject()
Example
The following code creates a new project (.fxpr) file at the specified location.
. . .
ConStringT strProjectName = "Sample_Project";
ConStringT strRootFolderName = "C:\Sample_Project";
. . .
F_ApiNewProject(strProjectName, strRootFolderName);
. . .
See also
“F_ApiOpenProject()” on page 369, “F_ApiSaveProject()” on page 408,
“F_ApiAddLocationToProject()” on page 67, “F_ApiDeleteComponentFromProject()”
on page 142, “F_ApiEditComponentOfProject()” on page 157,
“F_ApiExploreComponentOfProject()” on
page 161,“F_ApiRenameComponentOfProject()” on page 396
F_ApiNewSeriesObject()
F_ApiNewSeriesObject() creates a series object. Series objects include the
following object types:

FO_BodyPage

FO_BookComponent

FO_Pgf
F_ApiNewSeriesObject() allows you to specify the position in the series at which
to add the new object.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiNewSeriesObject(F_ObjHandleT docId,
IntT objType,
F_ObjHandleT prevId);
336
FDK Programmer’s Reference
F_ApiNewSeriesObject()
...
FDK Function Reference
Arguments
docId
The ID of the document to which to add the object.
objType
The type of object to create (for example, FO_BodyPage or FO_Pgf).
prevId
The ID of the object in the series after which to add the new object. To add a
paragraph at the start of a flow, specify the ID of the flow. To add an object at the
beginning of any other series, specify 0.
Returns
The ID of the new series object, or 0 if an error occurs.
If F_ApiNewSeriesObject() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadNew
Object can’t be created
FE_BadObjId
Invalid object ID
FE_NotBodyPage
prevId must specify the ID of a body page
FE_NotPgf
prevId must specify the ID of a paragraph
FE_NotBookComponent
prevId must specify the ID of a book component
Example
The following code inserts a paragraph after the paragraph containing the insertion
point:
. . .
F_ObjHandleT docId, pgfId;
F_TextRangeT tr;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if (tr.beg.objId == 0) return;
pgfId = F_ApiNewSeriesObject(docId, FO_Pgf, tr.beg.objId);
. . .
FDK Programmer’s Reference 337
2
FDK Function Reference
F_ApiNewSeriesObject()
See also
“F_ApiNewAnchoredObject()” on page 318 and “F_ApiNewNamedObject()” on
page 333.
Stru cture d
F_ApiNewSubObject()
F_ApiNewSubObject() creates the following types of format rule objects:

FO_FmtRule

FO_FmtRuleClause

FO_FmtChangeList
To create a named format change list (FO_FmtChangeList object) in the format
change list catalog, use F_ApiNewNamedObject().
F_ApiNewSubObject() allows you to associate the new object with a specified
property of the parent object. For example, you can create an FO_FmtRule as the text
format rule of an element definition or as a subformat rule of a format rule clause.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiNewSubObject(F_ObjHandleT docOrBookId,
F_ObjHandleT parentId
IntT property);
338
FDK Programmer’s Reference
F_ApiNewSeriesObject()
...
FDK Function Reference
Arguments
docOrBookId
The ID of the document or book in which to create the new object
parentId
The ID of the object’s parent object
property
The property of the parent object to associate the new object with
The following table shows the parent objects for which you can create format rule
objects. It also lists the properties with which you can associate the new object, the type
of object you can create, and how many objects of that type of object you can associate
with each property.
Parent object type
Property
Type of new object
Number that
can be
created
FO_ElementDef
FP_TextFmtRules
FO_FmtRule
Multiple
FP_ObjectFmtRules
FO_FmtRule
One
FP_PrefixRules
FO_FmtRule
Multiple
FP_SuffixRules
FO_FmtRule
Multiple
FP_FirstPgfRules
FO_FmtRule
Multiple
FP_LastPgfRules
FO_FmtRule
Multiple
FO_FmtRule
FP_FmtRuleClauses
FO_FmtRule
Clause
Multiple
FO_FmtRuleClause
FP_SubFmtRule
FO_FmtRule
One
FO_FmtRuleClause
FP_FmtChangeList
FO_FmtChange
List
One
If you associate a new format rule object with a property that can specify multiple
objects, F_ApiNewSubObject() adds the new object after any existing objects for
that property.
If you attempt to associate a new format rule object with a property that can specify only
one object and that property already has an object associated with it,
F_ApiNewSubObject() fails, returning 0.
FDK Programmer’s Reference 339
2
FDK Function Reference
F_ApiNewSeriesObject()
Returns
The ID of the new format rule object, or 0 if an error occurs.
If F_ApiNewSubObject() fails, the API assigns one of the following values to
FA_errno.
340
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadNew
Object can’t be created
FE_BadPropNum
The property number specified for property is invalid
FE_WrongProduct
Current FrameMaker product isn’t supported
FDK Programmer’s Reference
F_ApiNewSeriesObject()
...
FDK Function Reference
Example
The following code adds a format rule to the Section element definition so that the
element definition appears as shown in Figure 3-1:
. . .
#define in (MetricT) 65536*72
F_ObjHandleT docId, sectEdefId, fmtRuleId, clauseId;
F_ObjHandleT changeListId;
/* Get ID of Section element definition. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
sectEdefId = F_ApiGetNamedObject(docId, FO_ElementDef,
"Section");
/* Add the format rule. */
fmtRuleId = F_ApiNewSubObject(docId, sectEdefId,
FP_TextFmtRules);
/* Set rule type and other characteristics. */
F_ApiSetInt(docId, fmtRuleId, FP_FmtRuleType,
FV_CONTEXT_RULE);
/* Add rule clause to format rule. */
clauseId = F_ApiNewSubObject(docId, fmtRuleId,
FP_FmtRuleClauses);
F_ApiSetString(docId, clauseId, FP_ContextLabel,"SubSection");
F_ApiSetString(docId, clauseId, FP_Specification,"Section");
/* Create format change list and add it to rule clause. */
changeListId = F_ApiNewSubObject(docId, clauseId,
FP_FmtChangeList);
F_ApiSetMetric(docId, changeListId, FP_LeftIndentChange, in);
. . .
Element (Container): Section
General rule: Head, (Para | List)+, Section*
Text format rules
1. If context is: Section
Context label: SubSection
Basic properties
Indents
Move left indent by: 1.0"
FDK Programmer’s Reference 341
2
FDK Function Reference
F_ApiNewTable()
Figure 3-1 Section element definition
See also
“F_ApiNewSeriesObject()” on page 336.
F_ApiNewTa ble()
F_ApiNewTable() inserts a table (FO_Tbl object).
When you create a table in the user interface, you can specify a Table Catalog format for
the table. The FrameMaker product uses the following properties of the Table Catalog
format as the defaults for the new table:

Number of body rows (FP_TblInitNumBodyRows)

Number of columns (FP_TblInitNumCols)

Number of footer rows (FP_TblInitNumFRows)

Number of header rows (FP_TblInitNumHRows)

Paragraph formats for header, body, and footer cells
For example, if the Table Catalog format’s FP_TblInitNumCols property is set to
8, the FP_NumCols property of the new table is set to 8.
With F_ApiNewTable(), you can use the Table Catalog format properties as defaults
for the number of rows and columns in a new table, or you can provide your own
defaults.
After you have created a table, you can add or remove rows with F_ApiAddRows()
and F_ApiDeleteRows(). You can add or remove columns with
F_ApiAddCols() and F_ApiDeleteCols(). You can also use
F_ApiSetPropertyType() functions to change the table’s other properties.
If you use F_ApiNewTable() to create a table in a structured document,
FrameMaker applies default element tags, such as Table, Row, and Cell, to the table
element and its child elements. To make these elements valid, you must add code to
change their tags. In most cases it is easier to add tables to structured documents by
calling F_ApiNewElementInHierarchy() or F_ApiNewElement() to add a
table element.
342
FDK Programmer’s Reference
F_ApiNewTable()
...
FDK Function Reference
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiNewTable(F_ObjHandleT docId,
StringT format,
IntT numCols,
IntT numBodyRows,
IntT numHeaderRows,
IntT numFooterRows,
F_TextLocT *textLocp);
Arguments
docId
The ID of the document to which to add the table.
format
The table format tag (for example, FormatA or Wide Table). To use
the default format, specify NULL.
numCols
The number of columns in the table. To use the default number of
columns from the Table Catalog format, specify -1.
numBodyRows
The number of rows in the table. To use the default number of body rows
from the Table Catalog format, specify -1.
numHeaderRows
The number of heading rows in the table. To use the default number of
header rows from the Table Catalog format, specify -1.
numFooterRows
The number of footing rows in the table. To use the default number of
footer rows from the Table Catalog format, specify -1.
textLocp
The location at which to insert the new table. The location can’t be
within a footnote or a table.
Returns
The ID of the new table, or 0 if an error occurs.
If F_ApiNewTable() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID.
FE_BadObjId
Invalid object ID.
FE_NotTextObject
Object specified for the text location isn’t a paragraph (FO_Pgf).
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in the
specified paragraph or text line.
FDK Programmer’s Reference 343
2
FDK Function Reference
F_ApiNewXML()
FA_errno value
Meaning
FE_BadOperation
Function call specified an illegal operation.
FE_BadNew
Table can’t be created; the format specified by format may not
exist or the text location specified by textLocp is in a table or a
footnote.
Example
The following code inserts a new table at the insertion point. The new table uses all the
defaults from the Format A Table Catalog format, except the number of heading rows,
which is 0.
. . .
F_ObjHandleT docId, tblId;
F_TextRangeT tr;
/* Get the insertion point. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
/* Insert the table at the insertion point. */
tblId = F_ApiNewTable(docId, "Format A", -1, -1,0, -1, &tr.beg);
. . .
See also
“F_ApiAddCols()” on page 63, “F_ApiAddRows()” on page 72, and
“F_ApiNewAnchoredObject()” on page 318.
F_ApiNewXML()
F_ApiNewXML() creates a new, untitled XML.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiNewXML(const F_PropValsT *newXMLParams,
F_PropValsT **newXMLReturnParamspp);
. . .
344
FDK Programmer’s Reference
F_ApiNotification()
...
FDK Function Reference
Arguments
newXMLParams
A property list telling FrameMaker how to open the file and
how to respond to errors and other conditions. To use the
default list, specify NULL.
newXMLReturnParamsp
p
A property list that returns the filename and provides
information about how the FrameMaker product opened the
file. It must be initialized before you call F_ApiNewXML().
To get a property list to specify for the newXMLParams parameter, use
F_ApiGetNewXMLDefaultParams().
Returns
Id of the new XML document.
Example
The following code demonstrates how to create a new XML file with a specified
structured application.
F_PropValsT params = F_ApiGetNewXMLDefaultParams ();
F_PropValsT *retParams = NULL;
for (UIntT i = 0; i < params.len; i++)
{
switch (params.val[i].propIdent.num)
{
case FS_StructuredApplication:
params.val[i].propVal.u.sval = F_StrCopyString
("My_Strcutured_App");
break;
}
}
F_ApiNewXML (&params, &retParams);
F_ApiDeallocatePropVals (&params);
F_ApiDeallocatePropVals (retParams);
F_ApiNotification()
F_ApiNotification() requests that the FrameMaker product notify your client
whenever a specified event, or stage of an event, occurs.
FDK Programmer’s Reference 345
2
FDK Function Reference
F_ApiNotification()
..............................................................................
IMPORTANT: If the FrameMaker product encounters an internal error and exits, it
does not send any notification to your client about operations performed after the error
occured. For example, after an error the product allows the user to save changes in
open documents, but it does not notify any clients of the save operations.
..............................................................................
Synopsis
#include "fapi.h"
. . .
IntT F_ApiNotification(IntT notification,
IntT state);
Arguments
notification
Constant that specifies the notification point. See the following table for a
list of available constants.
state
Specifies whether to turn notification on or off. True turns it on, and
False turns it off.
Many events have several notification points or stages that you can request notification
for. The following table lists the notification points and the constants that specify them:
Event or operation
Notification points
Notification constants
Frame binary
document opened
Before checking the
type of the file to be
opened
FA_Note_PreFileType
After checking the type
of the file to be opened
FA_Note_PostFileType
Before opening the file
FA_Note_PreOpenDoc
After opening the file
FA_Note_PostOpenDoc
Before checking the
type of the file to be
opened
FA_Note_PreFileType
After checking the type
of the file to be opened
FA_Note_PostFileType
Before opening the file
FA_Note_PreOpenMIF
After opening the file
FA_Note_PostOpenMIF
MIF document opened
346
FDK Programmer’s Reference
F_ApiNotification()
Event or operation
Notification points
Notification constants
SGML document
opened
Before checking the
type of the file to be
opened
FA_Note_PreFileType
After checking the type
of the file to be opened
FA_Note_PostFileType
Before opening the file
FA_Note_PreOpenSGML
After opening the file
FA_Note_PostOpenSGML
Before checking the
type of the file to be
opened
FA_Note_PreFileType
After checking the type
of the file to be opened
FA_Note_PostFileType
Before opening the file
FA_Note_PreOpenXML
After opening the file
FA_Note_PostOpenXML
Filterable document
opened
Before checking the
type of the file to be
opened
FA_Note_FilterIn
Frame binary book
opened
Before checking the
type of the file to be
opened
FA_Note_PreFileType
After checking the type
of the file to be opened
FA_Note_PostFileType
Before opening the file
FA_Note_PreOpenBook
After opening the file
FA_Note_PostOpenBook
Before checking the
type of the file to be
opened
FA_Note_PreFileType
After checking the type
of the file to be opened
FA_Note_PostFileType
Before opening the file
FA_Note_PreOpenBookMIF
After opening the file
FA_Note_PostOpenBookMIF
Client defined number
handling. It has the
following four values
FA_Note_RTL_NumberUtility
Indic to Numeric
numbers
FV_ITON
XML document
opened
MIF book opened
RTL Number handling
...
FDK Function Reference
FDK Programmer’s Reference 347
2
FDK Function Reference
F_ApiNotification()
Event or operation
Notification points
Notification constants
Numeric to Indic
numbers
FV_NTOI
Farsi to Numeric
numbers
FV_FTON
Numeric to Farsi
numbers
FV_NTOF
Before opening the file
FA_Note_PreBook
ComponentOpen
After opening the file
FA_Note_PostBook
ComponentOpen
Before generating the
file
FA_Note_PreGenerate
After generating the file
FA_Note_PostGenerate
Before saving the
document
FA_Note_PreSaveDoc
After saving the
document
FA_Note_PostSaveDoc
Before saving the
MIF file
FA_Note_PreSaveMIF
After saving the
MIF file
FA_Note_PostSaveMIF
Before specifying
Acrobat settings and
generating PostScript
FA_Note_PreSaveAs
PDFDialog
After specifying
Acrobat settings and
generating PostScript
FA_Note_PostSaveAs
PDFDialog
Before distilling the
PostScript
FA_Note_PreDistill
After distilling the
PostScript
FA_Note_PostDistill
Document saved as
filterable type
Before the document is
saved
FA_Note_FilterOut
Document exited
Before exiting the
document
FA_Note_PreQuitDoc
After exiting the
document
FA_Note_PostQuitDoc
User double-clicked to
open a document in a
book window
Generating a list or
TOC for a document or
a book
Document saved in
Frame binary format
Document saved in
MIF format
Document saved as
PDF
348
FDK Programmer’s Reference
F_ApiNotification()
Event or operation
Notification points
Notification constants
Book exited
Before exiting the book
FA_Note_PreQuitBook
After exiting the book
FA_Note_PostQuitBook
First change made to a
document since it was
opened or saved
After the document is
changed
FA_Note_DirtyDoc
First change made to a
book since it was
opened or saved
After the book is
changed
FA_Note_DirtyBook
Book saved in Frame
binary format
Before saving the book
FA_Note_PreSaveBook
After saving the book
FA_Note_PostSaveBook
Before saving the
MIF file
FA_Note_PreSaveBookMIF
After saving the
MIF file
FA_Note_PostSaveBookMIF
Before saving the
document
FA_Note_PreAutoSaveDoc
After saving the
document
FA_Note_PostAutoSaveDoc
Before reverting the
document
FA_Note_PreRevertDoc
After reverting the
document
FA_Note_PostRevertDoc
Before reverting
the book
FA_Note_PreRevertBook
After reverting
the book
FA_Note_PostRevertBook
Before the OK to Exit
dialog box appears
FA_Note_PreQuitSession
Immediately before
exiting the session
FA_Note_PostQuitSession
After
F_ApiCallClient(
) is called
FA_Note_ClientCall
Book saved in MIF
format
Document saved with
Autosave
Document reverted
Book reverted
FrameMaker product
exited
Another client calls
F_ApiCallClient(
)
with clname set to the
current client’s name
...
FDK Function Reference
FDK Programmer’s Reference 349
2
FDK Function Reference
F_ApiNotification()
Event or operation
Notification points
Notification constants
Any user action, such
as a command choice
or text entry
After the FrameMaker
product finishes
processing the user
action
FA_Note_BackToUser
Text inset owned by
current client clicked
After the user clicked
the inset
FA_Note_DisplayClientTi
Dialog
FrameMaker product
updating all text insets
When the client needs
to update insets that
belong to it
FA_Note_UpdateAllClientTi
FrameMaker product
updating a specific text
inset
When the client needs
to update a specified
inset
FA_Note_UpdateClientTi
Text or graphic
imported
Before importing the
text or graphic
FA_Note_PreImport
After importing the text
or graphic
FA_Note_PostImport
Before the
FrameMaker product
executes command or
adds text to the
document
FA_Note_PreFunction
After the FrameMaker
product executes
command or adds text
to the document
FA_Note_PostFunction
Before the
FrameMaker product
responds to the mouse
click
FA_Note_PreMouseCommand
After the FrameMaker
product responds to the
mouse click
FA_Note_PostMouseCommand
Before the
FrameMaker product
executes the hypertext
command
FA_Note_PreHypertext
After the FrameMaker
product executes the
hypertext command
FA_Note_PostHypertext
FrameMaker product
command invoked or
text entered in a
document
Mouse button clicked
Hypertext command
invoked
350
FDK Programmer’s Reference
F_ApiNotification()
Event or operation
Notification points
Notification constants
The user clicked Go To
Source in the crossreference dialog box
Before the
FrameMaker product
goes to the crossreference source
FA_Note_PreGoToXrefSrc
After the FrameMaker
product goes to the
cross-reference source
FA_Note_PostGoToXrefSrc
After the user clicks
OK in the Print dialog
box, but before the
FrameMaker product
prints the document or
book
FA_Note_PrePrint
After the FrameMaker
product prints the
document or book
FA_Note_PostPrint
Body page added to
document
After the FrameMaker
product adds the
body page
FA_Note_BodyPageAdded
Body page deleted
from document
After the FrameMaker
product deletes the
body page
FA_Note_BodyPageDeleted
Structural element
inserteda
Before the element is
inserted
FA_Note_PreInsertElement
After the element is
inserted
FA_Note_PostInsertElement
Before the element is
copied.
FA_Note_PreCopyElement
After the element is
copied.
FA_Note_PostCopyElement
Before the element is
changed
FA_Note_PreChangeElement
After the element is
changed
FA_Note_PostChangeElement
Before the element is
wrapped
FA_Note_PreWrapElement
After the element is
wrapped
FA_Note_PostWrapElement
Document or book
printed
Structural element
copied
Structural element
changed
Structural element
wrapped
...
FDK Function Reference
FDK Programmer’s Reference 351
2
FDK Function Reference
F_ApiNotification()
Event or operation
Notification points
Notification constants
Structural element
dragged
Before the element is
dragged
FA_Note_PreDragElement
After the element is
dragged
FA_Note_PostDragElement
Before the attribute
value is set
FA_Note_PreSetAttrValue
After the attribute value
is set
FA_Note_PostSetAttrValue
Before the element
definitions are
imported
FA_Note_PreImportElementDefs
After the element
definitions are
imported
FA_Note_PostImportElementDef
s
Before the text entry
FA_Note_PreInlineTypeIn
After the text entry
FA_Note_PostInlineTypeIn
When the inset is
selected
FA_Note_U3DCommand: if the selected
inset is a u3d object
An attribute value
is set
Element definitions are
imported
Inline input of doublebyte text
An inset is selected
FA_Note_Not_U3DCommand: if the
selected inset is not a u3d object
A Robohelp screen
capture is inserted
When the screen
capture is inserted
FA_Note_RSC_Supported_File:
When the file supports Robohelp screen
capture.
FA_Note_Not_RSC_Supported_File
: When the file does not support Robohelp
screen capture.
A graphic supported by
Adobe Illustrator (AI)
is clicked. Following
format are supported
by AI:
When the graphic is
clicked
FA_Note_AI_Supported_File
When the graphic is
clicked
FA_Note_Not_AI_Supported_File
"FrameImage",
"FrameVector", "PDF",
"EPSI", "TIFF",
"SVG", "DIB", "EMF",
"JPEG", "QuickDraw
PICT", "PNG", "PSD",
"WMF", "DXF
A graphic not
supported by Adobe
Illustrator is clicked.
352
FDK Programmer’s Reference
F_ApiNotification()
...
FDK Function Reference
Event or operation
Notification points
Notification constants
The workspace
launches a particular
client’s modeless
dialog
Before the modeless
dialog is launched
FA_Note_Dialog_Create
When a client’s
modeless dialog is
closed because of
workspace-related
events such as
switching workspaces
Before the modeless
dialog is closed
FA_Note_QuitModelessDialog
When a client displays
or updates (in case the
dialog is already
displayed) a crossreference dialog
Before the dialog is
displayed or updated.
FA_Note_DisplayClientXRefDia
log
A particular DITA
reference is updated as
specified using the
element ID and the
reference type string
After the reference is
updated
FA_Note_UpdateDITAReference
All DITA references of
the specified type are
updated.
After the references are
updated
FA_Note_UpdateDITAReferences
A DITA map is
published
Before publishing starts
FA_Note_PrePublishDitamap
A DITA map is
published
After the book or
document has been
generated
FA_Note_PostPublishDitamap
When FrameMaker
wants to determine
whether a command is
enabled or disabled
FA_Note_IsCommandEnabled
When a view is
switched
Before theview is
switched
FA_Note_PreSwitchView
When a view is
switched
After the view is
switched
FA_Note_PostSwitchView
Export
FA_Note_PreExport
FA_Note_PostExport
FA_Note_FilterFileToFile
FA_Note_Dialog
FDK Programmer’s Reference 353
2
FDK Function Reference
F_ApiNotification()
Event or operation
Notification points
Notification constants
FA_Note_Alert
FA_Note_Palette
FA_Note_ToolBar
FA_Note_ConsoleMessage
FA_Note_Help
FA_Note_URL
FA_Note_CursorChange
FA_Note_FontSubstitution
FA_Note_UndoCheckpoint
FA_Note_FileOpen
a. FrameMaker issues the FA_Note_PreInsertElement and FA_Note_PostInsertElement
notifications when the user inserts an element using the element catalog or a menu command or dialog box
which inserts a marker, footnote, cross-reference, equation, anchored frame, or table. FrameMaker does not
issue the FA_Note_PreInsertElement and FA_Note_PostInsertElement notifications when it
automatically inserts elements because the user or a client added rows, columns, or table titles; when the
user or a client imports a graphic; or when a client adds an element programmatically.
The notification constants are numbered sequentially, starting with 0. The API provides
a constant, FA_Note_Num, that specifies the total number of notifications. This makes
it easy to request notification for all notification points, as shown in the following
example code.
Returns
FE_Success if it succeeds, or an error code if it fails.
If F_ApiNotification() fails, the API assigns one of the following values to
FA_errno.
354
FA_errno value
Meaning
FE_Transport
A transport error occurred
FE_BadNotificationNum
The specified notification number was invalid
FDK Programmer’s Reference
F_ApiNotify()
...
FDK Function Reference
Example
The following code instructs the FrameMaker product to notify your client for all
notification points:
. . .
IntT i;
for (i=0; i < FA_Note_Num; i++)
F_ApiNotification(i, True);
. . .
VoidT F_ApiNotify(notification, docId, sparm, iparm)
IntT notification;
F_ObjHandleT docId;
StringT sparm;
IntT iparm;
{
F_Printf(NULL, "Notification: %d:\n", notification);
}
. . .
See also
“F_ApiNotify()” on page 355.
F_ApiNotify()
F_ApiNotify() is a callback that you can define in your client. The FrameMaker
product calls F_ApiNotify() when the user or another API client initiates an
operation, such as Open or Save, for which your client has requested notification. To
request notification, you must call F_ApiNotification() for each notification
point.
Your client can cancel any command or action for which it receives a
FA_Note_PreNotificationPoint notification. For example, if it receives the
FA_Note_PreQuitDoc notification, it can cancel the Close command and prevent the
user from closing a document. To abort a command, call F_ApiReturnValue(),
with the parameter set to FR_CancelOperation, when your client receives
notification for the command. For more information, see “Canceling commands” in the
FDK Programmer’s Guide.
..............................................................................
IMPORTANT: If the FrameMaker product encounters an internal error and exits, it
does not send any notification to your client about operations performed after the error
occured. For example, after an error the product allows the user to save changes in
open documents, but it does not notify any clients of the save operations.
..............................................................................
FDK Programmer’s Reference 355
2
FDK Function Reference
F_ApiNotify()
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiNotify(IntT notification,
F_ObjHandleT docId,
StringT sparm,
IntT iparm);
Arguments
notification
A constant that indicates the event and the notification point. See the table
in “F_ApiNotification()” on page 345 for a list of the constants.
docId
The ID of the active document when the event occurs. For filters, the
document into which the filter should import its data; if this is zero, the
filter must create a new document.
sparm
The string, if any, associated with the notification. For example, if the
notification is for an Open or Save operation, sparm specifies the
pathname of the affected file. If the notification is for text entry, sparm
specifies the text the user typed.
iparm
If notification is FA_NotePreFunction or
FA_NotePostFunction, iparm is the f-code for the command. If
notification is FA_NotePreMouseCommand or
FA_NotePostMouseCommand, iparm specifies bit flags specifying
the number of mouse clicks and the modifier keys the user was holding
down. See the table below for a list of the flags.
..............................................................................
IMPORTANT: For book-wide commands, the FrameMaker product posts an
FA_NotePreFunction and FA_NotePostFunction notification for the book file, and for
each document in the book. When trapping book-wide functions, you should check the
value of docId to determine whether it indicates a document or the active book.
For example, if you search a book with two documents in it, the FrameMaker product
posts the following function notifications:
FA_Note_PreFunction (start searching book)
FA_Note_PreFunction (start searching first document)
FA_Note_PostFunction (stop searching first document)
FA_Note_PreFunction (start searching second document)
FA_Note_PostFunction (stop searching second document))
FA_Note_PostFunction (stop searching book)
..............................................................................
356
FDK Programmer’s Reference
F_ApiNotify()
...
FDK Function Reference
The following table shows the values sparm has for specific notifications.
Notifications
sparm value
All Open, Save, Print, and Close
notifications for documents
and books
The complete pathname of the document
or book.
FA_Note_PreDistill
FA_Note_PostDistill
When this notification occurs as a result of saving
a document or book as PDF, sparm contains the
complete pathname of thePostScript file that was
generated from the document or book
FA_Note_PreFunction
FA_Note_PostFunction
If the user typed text, the text. If the user applied a
paragraph or character format or a font family, the
name of the format or font family.
FA_Note_PreChangeElement
FA_Note_PostChangeElement
The element tag of the changed structural element.
FA_Note_PreGenerate
FA_Note_PostGenerate
The book’s filename. If the book is untitled, NULL.
FA_Note_PreHypertext
The string of the hypertext command.
FA_Note_PostHypertext
Null
FA_Note_PreImport
FA_Note_PostImport
The name of the imported file.
FA_Note_PreInsertElement
The element tag of the inserted structural element.
FA_Note_PostInsertElement
The element tag of the inserted structural element.
FA_Note_PreOpenBook
FA_Note_PostOpenBook
The complete pathname of the book file. If the
book is untitled, NULL.
FA_Note_PreSetAttrValue
FA_Note_PostSetAttrValue
The attribute name.
FA_Note_PreWrapElement
The element tag of the wrapped structural element.
FA_Note_PostWrapElement
The element tag of the wrapped structural element.
FA_Note_UpdateDITAReference
DITA Reference type string:

DITA_AUTO

DITA_CONREF

DITA_XREF

DITA_LINK

DITA_TOPICREF

DITA_TOPICSETREF
FDK Programmer’s Reference 357
2
FDK Function Reference
F_ApiNotify()
Notifications
sparm value
FA_Note_UpdateDITAReference
s
NULL
FA_Note_PreSwitchView
The name of the new view.
FA_Note_PostSwitchView
The name of the old view.
All other notifications
NULL.
The following table shows the values iparm has for specific notifications.
Notifications
iparm value
FA_Note_PreFunction
FA_Note_PostFunction
The f-code for the command the user invoked. For a
list of f-code constants, see the fcodes.h header
file provided with the FDK.
FA_Note_UpdateAllClientTi
One of the following flags to indicate which text
insets are to be updated:
FV_UpdateAllAutomaticClientTi indicates all
insets with the FP_TiAutomaticUpdate property
set to True.
FV_UpdateAllManualClientTi indicates all
insets with the FP_TiAutomaticUpdate property
set to False.
FV_UpdateAllClientTi indicates all insets
regardless of the setting for the
FP_TiAutomaticUpdate property.
358
FA_Note_UpdateClientTi
The ID of the text inset.
FA_Note_PreHypertext
FA_Note_PostHypertext
The ID of the hypertext object that was activated. If
the hypertext message is for an FDK client, iparm
is the same as the ID passed to the objId parameter
of the client’s F_ApiMessage() callback.
FA_Note_PreGoToXrefSrc
FA_Note_PostGoToXrefSrc
The ID of the associated cross-reference
FDK Programmer’s Reference
F_ApiNotify()
...
FDK Function Reference
Notifications
iparm value
FA_Note_PreMouseCommand
FA_Note_PostMouseCommand
The 8 high bits specify the number of mouse clicks
minus one.
The next 8 bits indicate the modifier key
used:FF_SHIFT_KEY, FF_CONTROL_KEY,
FF_ALT_KEY, or FF_CMD_KEY
The 16 low bits specify the mouse action: for
example, FF_TEXT_SEL if the user is selecting text;
FF_TEXT_EXT if the user is extending an existing
selection; or OBJ_SEL if the user is selecting an
object. For a complete list of the constants for mouse
actions, see /* Mouse actions */ in the
fapidefs.h header file provided with the FDK.
FA_Note_PreInsertElement
FA_Note_PostInsertElement
The ID of the inserted structural element.
FA_Note_PreWrapElement
FA_Note_PostWrapElement
The ID of the newly created structural element.
FA_Note_PreDragElement
The ID of the structural element that is cut if the
operation is completed.
FA_Note_PostDragElement
The ID of the structural element that is pasted if the
operation is completed.
FA_Note_PreSetAttrValue
FA_Note_PostSetAttrValue
The ID of the element for which the attribute is set.
FA_Note_PreImportElemDefs
The ID of the document from which element
definitions are imported.
FA_Note_PreSaveAsPDFDialo
g
FA_Note_PostSaveAsPDFDial
og
When this notification occurs as a result of the user
choosing to save as PDF in the Save As dialog box,
the value is non-zero. When this notification is the
result of the API saving as PDF, the value is zero.
FA_Note_RTL_NumberUtility
This notification denotes the client defined number
handling
It has one of the following values for handling
numbers:
FV_ITON for handling Indic to Numeric numbers
FV_NTOI for handling Numeric to Indic numbers
FV_FTON for handling Farsi to Numeric numbers
FV_NTOF for handling Numeric to Farsi numbers
FA_Note_UpdateDITAReferen
ce
The ID of the element to be updated
FDK Programmer’s Reference 359
2
FDK Function Reference
F_ApiObjectValid()
Notifications
iparm value
FA_Note_UpdateDITAReferen
ces
The refType for which DITA references will be
updated. The refType value can be one of:
All other notifications

FV_DITAObjTypeConref: Update all references
of type DITA Conref.

FV_DITAObjTypeXref: Update all references of
type DITA Xref.

FV_DITAObjTypeLink: Update all references of
type DITA Link.

FV_DITAObjTypeTopicref: Update all
references of type DITA Topicref.

FV_DITAObjTypeTopicsetref: Update all
references of type DITA Topicsetref.
0.
Returns
VoidT
Example
See “Adding the F_ApiNotify() callback” in the FDK Programmer’s Guide.
See also
“F_ApiNotification()” on page 345.
F _ A p i O b je c tVa l i d ( )
F_ApiObjectValid() determines if an object ID identifies an object in the specified
document. An object ID is invalid if the object has been deleted. In general, an object ID
is valid for only one document in a session, so F_ApiObjectValid() is useful for
debugging your clients.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiObjectValid(F_ObjHandleT docId,
F_ObjHandleT objId);
360
FDK Programmer’s Reference
F_ApiOpen()
...
FDK Function Reference
Arguments
docId
The ID of the document containing the object
objId
The ID whose validity you want to determine
Returns
True if the ID identifies an object in the current document, or False if it doesn’t.
If F_ApiObjectValid() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
Example
The following code determines if an ID is a valid ID for an object in the current
document, and then removes the object:
. . .
F_ObjHandleT docId, objId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
objId = F_ApiGetNamedObject(docId, FO_PgfFmt, "Body");
/* Code that might remove object or invalidate ID here. */
if (F_ApiObjectValid(docId, objId))
F_ApiDelete(docId, objId);
. . .
F_ApiOpen()
F_ApiOpen() opens a document or book. It can also create a new document.
F_ApiOpen() allows you to specify a script (property list) telling the FrameMaker
product how to open or create the file and how to deal with error and warning
conditions. For example, you can specify whether to abort or to continue opening a
document if it contains fonts that are not available. If the file is already open and
invisible, it will make the file visible. If you are using FileNames that have characters
above ASCII 128 see the FrameMaker FAQ on the Developer Web Page.
FDK Programmer’s Reference 361
2
FDK Function Reference
F_ApiOpen()
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiOpen(StringT fileName,
F_PropValsT *openParamsp,
F_PropValsT **openReturnParamspp);
Arguments
fileName
The full pathname of the file to open. If you are using
F_ApiOpen() to create a document, specify the name of the
template to use. For information on how filenames and paths on
different platforms are expressed, see the FDK Platform Guide
for that platform.
openParamsp
A property list telling the FrameMaker product how to open the
file and how to respond to errors and other conditions. To use the
default list, specify NULL.
openReturnParamspp
A property list that returns the filename and provides information
about how the FrameMaker product opened the file. It must be
initialized before you call F_ApiOpen().
..............................................................................
IMPORTANT: Always initialize the pointer to the property list that you specify for
openReturnParamspp to NULL before you call F_ApiOpen().
..............................................................................
To get a property list to specify for the openParamsp parameter, use
F_ApiGetOpenDefaultParams() or create the list from scratch. For a list of all the
properties an Open script property list can include, see
“F_ApiGetOpenDefaultParams()” on page 221. For an example of how to create a
property list from scratch, see “Example” in the FDK Programmer’s Guide.
To create a new document with F_ApiOpen(), set the FS_NewDoc property in the
openParamsp property list to True.
..............................................................................
IMPORTANT: When creating a new document (FS_NewDoc is True), and you display
the New dialog box (FS_ShowBrowser is True), the user may click Portrait,
Custom, or Landscape. If this occurs, F_ApiOpen() returns 0 and sets FA_errno
to FE_WantsPortrait, FE_WantsCustom, or FE_WantsLandscape. To create
a portrait, custom, or landscape document, use F_ApiCustomDoc() (see
“F_ApiCustomDoc()” on page 115.)
..............................................................................
Returns
The ID of the document or book if it opens it successfully, or 0 if an error occurs.
362
FDK Programmer’s Reference
F_ApiOpen()
...
FDK Function Reference
The property list that openReturnParamspp is set to has the properties shown in the
following table.
Property
Meaning and possible values
FS_OpenedFileName
A string that specifies the opened file’s pathname. If
you scripted FS_ShowBrowser, or the file was
filtered, or you didn’t specify the pathname, this
pathname can be different from the one you
specified in the Open script.
FS_OpenNativeError
The error condition; normally the same value as
FA_errno. If the file is opened successfully, it is set
to FE_Success. See the table below for a list of
possible values.
FS_OpenStatus
A bit field indicating what happened when the file
was opened. See the table below for a list of possible
flags.
Both the FS_OpenNativeError property and the FA_errno global variable
indicate the result of a call to F_ApiOpen(). The following table lists the possible
FDK Programmer’s Reference 363
2
FDK Function Reference
F_ApiOpen()
status flags and the FA_errno and FS_OpenNativeError values associated with
them.
FS_OpenNativeError and
FA_errno values
Possible FS_OpenStatus flags
FE_BadParameter
(file wasn’t opened)
FV_FileHadStructure: file had structured features, but current
FrameMaker product interface is not structured.
FV_FileAlreadyOpenThisSession: file is already open and
script disallowed opening another copy
FV_BadFileType: file was an executable file or other unreadable
type
FV_BadFileName: specified filename was invalid
FV_CantNewBooks: script specified a book that didn’t exist (the
Open operation can’t create a new book)
FV_BadScriptValue: Open script contained an invalid property
value
FV_MissingScript: F_ApiOpen() called without a script
FV_CantForceOpenAsText: Open script attempted to open the
file as text, but file was wrong type
FV_DisallowedType: file was a Frame binary document and the
Open script disallowed it
FV_DocDamagedByTextFilter: file was a text document and
was damaged when it was filtered
FV_DocHeadersDamaged: the document headers were damaged
(probably because of a file system problem)
FV_DocWrongSize: file is the wrong size (probably because of a
file system problem)
FV_ChecksumDamage: bad checksum
FE_SystemError
(file wasn’t opened)
FV_TooManyWindows: too many windows were open
FV_BadTemplate: a bad template was specified
FV_FileNotReadable: don’t have read permission for
the file
364
FDK Programmer’s Reference
F_ApiOpen()
...
FDK Function Reference
FS_OpenNativeError and
FA_errno values
Possible FS_OpenStatus flags
FE_Success
(file was opened)
FV_FileHasNewName: filename was changed from the name
specified in the F_ApiOpen() call
FV_RecoverFileUsed: recover file was present, and it was used
FV_AutoSaveFileUsed: Autosave file was present, and the user
or the Open script chose to use it
FV_FileWasFiltered: file was filterable and it was filtered
FV_FontsWereMapped: the document contained unavailable
fonts, which were mapped to substitute fonts
FV_FontMetricsChanged: the file contained fonts with
changed metrics, but it was opened anyway
FV_FontsMappedInCatalog: the Paragraph or Character
Catalog used unavailable fonts, which were mapped to substitute
fonts
FV_LanguagesWerentFound: the document used some
unavailable languages, but it was opened anyway
FV_FileIsOldVersion: the file was from an old FrameMaker
product version, but the user or the Open script chose to open it
anyway
FV_FileStructureStripped: the file had structured features,
which the user or the Open script chose to strip
FV_FileIsText: the file was a Text Only file, but the user or the
Open script chose to open it anyway
FV_OpenedViewOnly: the user or the Open script chose to open
the file as a View Only file
FV_EditableCopyOpened: the file was in use and the user or
the Open script opened an editable copy
FV_BadFileRefsWereMapped: file reference contained illegal
characters; the illegal characters were converted to something safe
for the current platform
FV_ReferencedFilesWerentFound: imported graphics files
couldn’t be found, but the file was opened anyway
FE_Success
(file was opened)
FV_UnresolvedXRefs: there were unresolved cross-references,
but the file was opened anyway
FV_UnresolvedTextInsets: there were unresolved text
insets, but the file was opened anyway
FDK Programmer’s Reference 365
2
FDK Function Reference
F_ApiOpen()
FS_OpenNativeError and
FA_errno values
FE_Success,
FE_Canceled,
FE_FailedState, or
FE_CanceledByClient
Possible FS_OpenStatus flags
FV_LockWasReset: file lock was reset
FV_LockNotReset: file had lock that wasn’t reset
FV_LockCouldntBeReset: file had lock that couldn’t
be reset
FV_FileWasInUse: file was in use
FV_FileIsViewOnly: file is a View Only file
FV_LockWasInvalid: file had invalid lock
FV_FileIsNotWritable: The file was not writable, and the
user canceled the open via the alert.
FV_FileModDateChanged: The file has changed since the last
time it was opened or saved in the current session.
FE_Canceled
(file wasn’t opened)
FV_CancelUseRecoverFile: a recover file was present, so the
user or the Open script canceled the Open operation
FV_CancelUseAutoSaveFile: an Autosave file was present,
so the user or the Open script canceled the Open operation
FV_CancelFileIsText: the file was text, so the user or the
Open script canceled the Open operation
FV_CancelFileIsInUse: the file was in use, so the user or the
Open script canceled the Open operation
FV_CancelFileHasStructure: the file had structure, so the
user or the script canceled the Open operation
FV_CancelReferencedFilesNotFound: the file contained
referenced files that were not available, so the user or the Open
script canceled the Open operation
FV_CancelLanguagesNotFound: the file contained languages
that weren’t available, so the user or the Open script canceled the
Open operation
FV_CancelFontsMapped: the document contained fonts that
needed to be mapped to other fonts, so the user or the Open script
canceled the Open operation
FV_CancelFontMetricsChanged: the file contained fonts
with changed metrics, so the user or the Open script canceled the
Open operation
366
FDK Programmer’s Reference
F_ApiOpen()
FS_OpenNativeError and
FA_errno values
...
FDK Function Reference
Possible FS_OpenStatus flags
FV_CancelFontsMappedInCatalog: the document’s
Character Catalog or Paragraph Catalog contained fonts that
needed to be mapped to other fonts, so the user or the Open script
canceled the Open operation
FV_CancelFileIsDoc: the file was a document and the Open
script disallowed it
FV_CancelFileIsMIF: the file was a MIF file and the Open
script disallowed it
FV_CancelBook: the file was a book and the Open script
disallowed it
FV_CancelBookMIF: the file was a MIF file and the Open script
disallowed it
FV_CancelFileIsFilterable: the file was a filterable file
and the Open script disallowed it
FV_CancelFileIsOldVersion: the file was from an old
version of a FrameMaker product, so the user or the Open script
canceled the Open operation
FV_CancelFileIsSgml: the file was an SGML document and
the Open script disallowed it
FV_CancelFileIsXML: the file was an XML document and the
Open script disallowed it
FV_CancelFileBrowser: the user canceled the Open operation
from the file browser
FV_CancelTempDiskFull: there was insufficient room on the
disk to cache data while opening the file.
To determine if a particular FS_OpenStatus bit is set, use F_ApiCheckStatus().
For more information, see “F_ApiCheckStatus()” on page 92.
After you are done with the property lists you use to call F_ApiOpen(), use
F_ApiDeallocatePropVals() to deallocate the memory they use.
FDK Programmer’s Reference 367
2
FDK Function Reference
F_ApiOpen()
Example
The following code opens a document named /tmp/my.doc. It creates a property list
that instructs the FrameMaker product to open my.doc in Text Only format,
regardless of its type. If the FrameMaker product opens the file successfully, the client
displays its filename.
. . .
#include "futils.h"
F_PropValsT params, *returnp = NULL;
F_ObjHandleT docId;
IntT i;
UCharT msg[256];
/* Allocate memory for the Open script. */
params = F_ApiAllocatePropVals(1);
if(params.len == 0) return;
/* Open file as Text Only regardless of its type. */
params.val[0].propIdent.num = FS_ForceOpenAsText;
params.val[0].propVal.valType = FT_Integer;
params.val[0].propVal.u.ival = True;
/* Open /tmp/my.doc. */
docId = F_ApiOpen("/tmp/my.doc", &params, &returnp);
/* Get filename of document from return property list. */
if (docId)
{
/* Get index of return property that specifies filename. */
i = F_ApiGetPropIndex(returnp, FS_OpenedFileName);
F_Sprintf(msg, "Opened %s",
returnp->val[i].propVal.u.sval);
F_ApiAlert(msg, FF_ALERT_CONTINUE_NOTE);
}
/* Free memory used by Open scripts. */
F_ApiDeallocatePropVals(&params);
F_ApiDeallocatePropVals(returnp);
. . .
368
FDK Programmer’s Reference
F_ApiOpenProject()
...
FDK Function Reference
See also
“F_ApiCheckStatus()” on page 92, “F_ApiGetOpenDefaultParams()” on page 221,
“F_ApiPrintOpenStatus()” on page 377, and “F_ApiSimpleOpen()” on page 472.
F_ApiOpenPro ject()
F_ApiOpenProject() opens a project.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiOpenProject FARGS(ConStringT projectFilePath);
Arguments
projectFilePath
The absolute path of the project to open.
Returns
VoidT
Example
The following code opens the project file from the specified path.
. . .
ConStringT projectFilePath =
"C:\Sample_Project\Sample_Project.fxpr";
. . .
F_ApiOpenProject(projectFilePath);
. . .
See also
“F_ApiNewProject()” on page 335, “F_ApiSaveProject()” on page 408,
“F_ApiAddLocationToProject()” on page 67, “F_ApiDeleteComponentFromProject()”
on page 142, “F_ApiEditComponentOfProject()” on page 157,
“F_ApiExploreComponentOfProject()” on
page 161,“F_ApiRenameComponentOfProject()” on page 396
FDK Programmer’s Reference 369
2
FDK Function Reference
F_ApiOpenResource()
F _ A p i O p e n R e so u rce ( )
F_ApiOpenResource() opens a client resource. With this function, you also have
access to FrameMaker cursors.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiOpenResource(IntT resourceType,
StringT resourceName);
Arguments
resourceType
The type of resource to open. To open a dialog resource, specify
FO_DialogResource.
resourceName
The name of the resource to open.
Returns
The ID of the opened resource, or 0 if it can’t open the resource.
If F_ApiOpenResource() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_BadOperation
Function call specified an illegal operation
Example
For two examples, see “F_ApiModalDialog()” on page 309 and
“F_ApiModelessDialog()” on page 311.
See also
“F_ApiModalDialog()” on page 309, “F_ApiModelessDialog()” on page 311, and
“F_ApiSetClientDir()” on page 418.
F_ A p i P a st e ( )
F_ApiPaste() pastes the contents of the FrameMaker product Clipboard into a
specified document at the insertion point. Cutting and Pasting objects will cause
FrameMaker to create a new UID for the pasted object.
370
FDK Programmer’s Reference
F_ApiPaste()
...
FDK Function Reference
Synopsis
#include "fapi.h"
. . .
IntT F_ApiPaste(F_ObjHandleT docId,
IntT flags);
Arguments
docId
The ID of the document to which to paste the selected text.
flags
Bit field that specifies how to paste the text and how to handle interactive alerts. For
default settings, specify 0.
If you specify 0 for flags, F_ApiPaste() suppresses any interactive alerts or
warnings that arise. It also inserts columns to the left of the current columns and rows
above the current row.
You can also OR the following values into flags.
flags constant
Meaning
FF_INTERACTIVE
Prompt user with dialog or alert boxes
that arise.
FF_VISIBLE_ONLY
Cut only the visible portion of the selection.
FF_DONT_DELETE_HIDDEN_TEXT
Don’t replace hidden text.
FF_DONT_APPLY_ALL_ROWS
Don’t apply condition setting on the Clipboard to all
rows. If whole table is selected and the Clipboard
contains condition setting, cancel the paste.
FF_REPLACE_CELLS
Replace selected cells with cells on the Clipboard.
FF_INSERT_BELOW_RIGHT
Add columns to the right of the current column or
below the current row.
When you use F_ApiPaste() to paste table cells into a table, it does not work
exactly like the interactive Paste command. The interactive Paste command
automatically overwrites cells if the Clipboard contains less than an entire row or
column. For example, if the insertion point is in a three-column table and the Clipboard
contains a single cell, the interactive Paste command overwrites the cell containing the
insertion point with the cell on the Clipboard. If two cells in the table are selected, the
Paste command overwrites both of them with the cell on the Clipboard.
By default, F_ApiPaste() does not overwrite any cells. If the Clipboard contains
less than an entire row or column when you call F_ApiPaste(), or of the current
selection is less than an entire row, F_ApiPaste does nothing and returns
FDK Programmer’s Reference 371
2
FDK Function Reference
F_ApiPaste()
FE_BadSelectionForOperation. This ensures that your do not inadvertently
overwrite any cells. To make F_ApiPaste() replace cells with the Clipboard
contents, you must call it with the FF_REPLACE_CELLS flag set.
The FF_INTERACTIVE flag takes precedence over other flags. So, if you specify
FF_INTERACTIVE | FF_DONT_DELETE_HIDDEN_TEXT and the selection contains
hidden text, the FrameMaker product prompts the user and allows the user to choose
whether to delete the hidden text. It is illegal to specify FF_REPLACE_CELLS |
FF_INSERT_BELOW_RIGHT.
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiPaste() fails, the API assigns one of the following values to FA_errno.
372
FA_errno value
Meaning
FE_BadOperation
Function call specified an illegal operation
FE_BadDocId
Invalid document ID
FE_BadSelectionForOperation
Current text selection is invalid for this operation
FE_Canceled
User canceled the operation
FDK Programmer’s Reference
F_ApiPopClipboard()
...
FDK Function Reference
Example
The following code makes sure the insertion point is an insertion point (not a selection),
and then pastes the text on the Clipboard to it.
. . .
F_TextRangeT tr;
F_ObjHandleT docId;
/* Get text selection. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
/* Make sure selection is an insertion point. */
tr.beg.objId = tr.end.objId;
tr.beg.offset = tr.end.offset;
F_ApiSetTextRange(FV_SessionId, docId, FP_TextSelection, &tr);
/* Paste Clipboard contents. */
F_ApiPaste(docId, 0);
. . .
See also
“F_ApiClear()” on page 96, “F_ApiCopy()” on page 111, and “F_ApiCut()” on
page 119.
F_ApiPopClipboard()
F_ApiPopClipboard() pops the Clipboard stack, moving the entry on the top of the
stack to the Clipboard.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiPopClipboard(VoidT);
Arguments
None.
FDK Programmer’s Reference 373
2
FDK Function Reference
F_ApiPrintFAErrno()
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiPopClipboard() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
FE_BadOperation
Clipboard stack is empty
Example
The following code executes Copy and Paste operations and then restores the original
Clipboard contents:
. . .
F_ObjHandleT docId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
F_ApiPushClipboard();
F_ApiCopy(docId, 0);
F_ApiPaste(docId, 0);
F_ApiPopClipboard();
. . .
See also
“F_ApiCopy()” on page 111, “F_ApiCut()” on page 119, “F_ApiPaste()” on page 370,
and “F_ApiPushClipboard()” on page 390.
F_ApiPrintFA Errno()
F_ApiPrintFAErrno() prints the current API error status, represented by the global
variable, FA_errno. It is useful for debugging clients.
When an API function fails, it stores an error code in the global variable, FA_errno.
FA_errno retains the error code until another function fails and sets it or until your
code explicitly sets it. To determine whether a set of API function calls has failed,
initialize FA_errno to FE_Success once before all the calls and check it once after
all the calls.
For example, if you call F_ApiNotification() and specify an invalid notification
constant, the API sets FA_errno to FE_BadNotificationNum. If you
374
FDK Programmer’s Reference
F_ApiPrintFAErrno()
...
FDK Function Reference
subsequently call F_ApiPrintFAErrno(), it prints the string
FE_BadNotificationNum.
For a list of error codes and their meanings, see Chapter 6, “Error Codes.”
F_ApiPrintFAErrno() prints to the Frame console..
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiPrintFAErrno(VoidT);
Arguments
None.
Returns
VoidT
If F_ApiPrintFAErrno() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
Example
The following code enables automatic change bars for the current document and uses
F_ApiPrintFAErrno() to check for errors.
. . .
F_ObjHandleT docId;
IntT changeBarsOn;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
FA_errno = FE_Success;
changeBarsOn = F_ApiGetInt(FV_SessionId, docId,
FP_AutoChangeBars);
/* If previous call succeeds, this call prints FE_Success. */
F_ApiPrintFAErrno();
. . .
FDK Programmer’s Reference 375
2
FDK Function Reference
F_ApiPrintImportStatus()
F_ApiPrintImportStatus()
F_ApiPrintImportStatus() prints status flags returned by F_ApiImport(). It
is useful for debugging your clients.
F_ApiPrintImportStatus() prints to Frame console.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiPrintImportStatus(F_PropValsT *p);
Arguments
p
The property list that F_ApiImport() returns in importReturnParamspp
Returns
VoidT
Example
The following code prints the import status after calling F_ApiImport():
. . .
F_PropValsT params, *returnParamsp = NULL;
F_ObjHandleT docId;
F_TextRangeT tr;
params = F_ApiGetImportDefaultParams();
if(params.len == 0) return;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
F_ApiImport(docId, &tr.beg, "/tmp/frame.doc",
&params, &returnParamsp);
F_ApiPrintImportStatus(returnParamsp);
. . .
See also
“F_ApiImport()” on page 288.
376
FDK Programmer’s Reference
F_ApiPrintOpenStatus()
...
FDK Function Reference
F _ A p i P r i n tO p en S ta t u s ()
F_ApiPrintOpenStatus() prints status flags returned by F_ApiOpen(). It is
useful for debugging your clients.
F_ApiPrintOpenStatus() prints to the Frame console..
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiPrintOpenStatus(F_PropValsT *p);
Arguments
p
The property list that F_ApiOpen() returns in openReturnParamspp
Returns
VoidT
Example
The following code prints the open status after calling F_ApiOpen() to open a
document named /tmp/my.doc:
. . .
F_PropValsT params, *returnParamsp = NULL;
F_ObjHandleT docId = 0;
params = F_ApiGetOpenDefaultParams();
docId = F_ApiOpen("/tmp/my.doc", &params, &returnParamsp);
if (!docId) return;
F_ApiPrintOpenStatus(returnParamsp);
. . .
See also
“F_ApiOpen()” on page 361.
F_ApiPrintPropVal()
F_ApiPrintPropVal() prints the value of a specified property. It is useful for
debugging your clients.
F_ApiPrintPropVal() prints to the Frame console.
FDK Programmer’s Reference 377
2
FDK Function Reference
F_ApiPrintPropVals()
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiPrintPropVal(F_PropValT *p);
Arguments
p
The property to print
Returns
VoidT
Example
The following code prints the name of the active document:
. . .
F_PropValT prop;
F_ObjHandleT docId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
prop = F_ApiGetPropVal(FV_SessionId, docId, FP_Name);
F_ApiPrintPropVal(&prop);
. . .
See also
“F_ApiGetPropVal()” on page 234.
F_ApiPrintPropVals()
F_ApiPrintPropVals() prints the values in a specified property list. It is useful for
debugging your clients.
F_ApiPrintPropVals() prints to the Frame console.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiPrintPropVals(F_PropValsT *p);
378
FDK Programmer’s Reference
F_ApiPrintSaveStatus()
...
FDK Function Reference
Arguments
p
The property list
Returns
VoidT
Example
The following code gets the properties for the paragraph containing the insertion point
and prints them to the console:
. . .
F_PropValsT props;
F_TextRangeT tr;
F_ObjHandleT docId, pgfId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
props = F_ApiGetProps(docId, tr.end.objId);
F_ApiPrintPropVals(&props);
. . .
F_ApiPrintSaveStatus()
F_ApiPrintSaveStatus() prints errors returned by F_ApiSave(). It is useful
for debugging your clients.
F_ApiPrintSaveStatus() prints to the Frame console.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiPrintSaveStatus(F_PropValsT *p);
Arguments
p
The property list that F_ApiSave() returns in saveReturnParamspp
Returns
VoidT
FDK Programmer’s Reference 379
2
FDK Function Reference
F_ApiPrintTextItem()
Example
The following code prints the save status after calling F_ApiSave() to save the
active document as /tmp/my.doc:
. . .
F_PropValsT params, *returnParamsp = NULL;
F_ObjHandleT mydocId;
/* Allocate Save scripts. */
params = F_ApiGetSaveDefaultParams();
if(params.len == 0) return;
/* Save document. */
mydocId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
F_ApiSave(mydocId, "/tmp/my.doc", &params, &returnParamsp);
/* Print save status. */
F_ApiPrintSaveStatus(returnParamsp);
. . .
See also
“F_ApiSave()” on page 405.
F_ApiPrintTe xtItem()
F_ApiPrintTextItem() prints the text in a specified text item. It is useful for
debugging clients.
F_ApiPrintTextItem() prints to the Frame console.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiPrintTextItem(F_TextItemT *textItem);
Arguments
textItem
Returns
VoidT
380
FDK Programmer’s Reference
The text item to print
F_ApiPrintTextItems()
...
FDK Function Reference
Example
The following code prints the first string text item in the paragraph containing the
insertion point:
. . .
F_TextItemsT tis;
F_ObjHandleT docId;
F_TextRangeT tr;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if(tr.beg.objId == 0) return;
tis = F_ApiGetText(docId, tr.beg.objId, FTI_String);
if(tis.len == 0) return;
F_ApiPrintTextItem(&tis.val[0]);
F_ApiDeallocateTextItems(&tis);
. . .
See also
“F_ApiGetText()” on page 251 and “F_ApiPrintTextItems()” on page 381.
F_ApiPrintTe xtItems()
F_ApiPrintTextItems() prints the text in a specified set of text items
(F_TextItemsT structure). It is useful for debugging clients.
F_ApiPrintTextItems() prints to the Frame console.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiPrintTextItems(F_TextItemsT *textItems);
Arguments
textItems
The set of text items to print
Returns
VoidT
FDK Programmer’s Reference 381
2
FDK Function Reference
F_ApiPrintUpdateBookStatus()
Example
The following code prints the string text items in the main flow in the active document:
. . .
F_TextItemsT tis;
F_ObjHandleT docId, flowId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
flowId = F_ApiGetId(FV_SessionId, docId, FP_MainFlowInDoc);
tis = F_ApiGetText(docId, flowId, FTI_String);
if(tis.len == 0) return;
F_ApiPrintTextItems(&tis);
F_ApiDeallocateTextItems(&tis);
. . .
See also
“F_ApiGetText()” on page 251 and “F_ApiPrintTextItem()” on page 380.
F_ApiPrintUpdateBookStatus()
F_ApiPrintUpdateBookStatus() prints errors returned by
F_ApiUpdateBook(). It is useful for debugging your clients.
F_ApiPrintUpdateBookStatus() prints to the Frame console.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiPrintUpdateBookStatus(F_PropValsT *p);
Arguments
p
The property list that F_ApiUpdateBook() returns in updateReturnParamspp
Returns
VoidT
382
FDK Programmer’s Reference
F_ApiProgressBarEx()
...
FDK Function Reference
Example
The following code prints the update status after calling F_ApiUpdateBook() to
update the active book:
. . .
F_PropValsT params, *returnParamsp = NULL;
F_ObjHandleT bookId;
/* Allocate update scripts. */
params = F_ApiGetUpdateBookDefaultParams();
if(params.len == 0) return;
/* Update book. */
bookId = F_ApiGetId(0, FV_SessionId, FP_ActiveBook;
F_ApiUpdateBook(bookId, &params, &returnParamsp);
/* Print update status. */
F_ApiPrintUpdateBookStatus(returnParamsp);
. . .
See also
“F_ApiSave()” on page 405.
F_ApiProgressBarEx()
F_ApiProgressBarEx() runs a progress bar in a separate thread while the user can
continue working in the background.
Synopsis
#include "fapi.h"
StatusT
F_ApiProgressBarEx(BoolT bShow, const F_PropValsT *vals);
FDK Programmer’s Reference 383
2
FDK Function Reference
F_ApiPromoteElement()
Arguments
One of the following:
bShow
True (Start the progress bar)
False (End the progress bar)
Structure that includes an array of property-value pairs.
vals
Property
FP_DbTitleLabel
Type
Meaning
StringT
Sets the title of the progress bar dialog.
Returns
FE_Success.
F_ApiPro moteElement()
F_ApiPromoteElement() promotes the selected structural element. The selected
element becomes a sibling of its former parent. It appears immediately after its former
parent. The siblings that follow it become its children.
..............................................................................
IMPORTANT: One structural element must be selected when
F_ApiPromoteElement() is called. The element cannot be the root element or a
child of the root element.
..............................................................................
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiPromoteElement(F_ObjHandleT docId);
Arguments
docId
Returns
VoidT
384
FDK Programmer’s Reference
The ID of the document containing the selected structure element
F_ApiPromptInt()
...
FDK Function Reference
If F_ApiPromoteElement() fails, the API assigns one of the following values to
FA_errno.\
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product isn’t supported
FE_BadDocId
Invalid document ID
FE_BadSelectionForOperation
Current selection is invalid for this operation
Example
The following code promotes the selected structural element in the active document:
. . .
F_ApiPromoteElement(F_ApiGetId(0, FV_SessionId, FP_ActiveDoc));
. . .
See also
“F_ApiDemoteElement()” on page 150.
F_Api Pro mptInt()
F_ApiPromptInt() displays a dialog box that prompts the user for a single integer
value. It allows you to provide a default value, which appears in the entry field when the
dialog box appears. The dialog box has OK and Cancel buttons. F_ApiPromptInt()
does not assign a value to *intp if the user clicks Cancel. If the user types alphabetic
text after a number, the API ignores the text and just returns the value of the number.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiPromptInt(IntT* intp,
StringT message,
StringT stuffVal);
Arguments
intp
The value in the input field when the user clicks OK.
message
The message that appears in the dialog box. It must be 255 characters or less.
stuffVal
The default value that appears in the input field when the dialog box is first
displayed.
FDK Programmer’s Reference 385
2
FDK Function Reference
F_ApiPromptInt()
Returns
0 if the user clicked OK, or a nonzero value if the user clicked Cancel or an error
occurred.
If F_ApiPromptInt() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
Example
The following code displays the dialog box shown in Figure 3-2:
. . .
#include "futils.h"
IntT err;
IntT ires;
UCharT mesg[256];
err = F_ApiPromptInt(&ires, "Integer?", "1234");
if (err)
F_Sprintf(mesg, "Cancel was pressed, ires is undefined");
else F_Sprintf(mesg, "The value of ires is %d.", ires);
F_ApiAlert(mesg, FF_ALERT_CONTINUE_NOTE);
. . .
Figure 3-2 Integer prompt dialog box
See also
“F_ApiPromptMetric()”, and “F_ApiPromptString()” on page 388.
386
FDK Programmer’s Reference
F_ApiPromptMetric()
...
FDK Function Reference
F_ApiPromptMetric()
F_ApiPromptMetric() displays a dialog box that prompts the user for a single
metric value. It allows you to provide a default value, which appears in the entry field
when the dialog box appears. The dialog box has OK and Cancel buttons.
F_ApiPromptMetric() does not assign a value to *metricp if the user clicks
Cancel.
F_ApiPromptMetric() dialog boxes behave like metric dialog boxes in the user
interface. If the user types a number followed by a string that represents a unit (for
example 10pts or 5"), the API converts the number into the equivalent number of
metric units. If the user doesn’t specify a unit, the API uses points (metric 65536).
Synopsis
#include "fapi.h"
. . .
IntT F_ApiPromptMetric(MetricT *metricp,
StringT message,
StringT stuffVal,
MetricT defaultunit);
Arguments
metricp
The value in the input field when the user clicks OK.
message
The message that appears in the dialog box. It must be 255 characters or
less.
stuffVal
The default value that appears in the input field when the dialog box is first
displayed.
defaultunit
The metric unit to use if the user doesn’t specify one.
Returns
0 if the user clicked OK, or a nonzero value if the user clicked Cancel or an error
occurred.
If F_ApiPromptMetric() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
FDK Programmer’s Reference 387
2
FDK Function Reference
F_ApiPromptString()
Example
The following code displays the dialog box shown in Figure 3-3:
. . .
#include "futils.h"
#define in (MetricT)(65536*72)
IntT err;
MetricT mres;
UCharT mesg[256];
err = F_ApiPromptMetric(&mres, "Metric?", "12.34 in", in);
if (err)
F_Sprintf(mesg, "Cancel was pressed, mres is undefined");
else
F_Sprintf(mesg, "The value of mres is %f inches.", mres/in);
F_ApiAlert(mesg, FF_ALERT_CONTINUE_NOTE);
. . .
Figure 3-3 Metric prompt dialog box
See also
“F_ApiPromptInt()” on page 385 and “F_ApiPromptString()”.
F_Api Pro mptS trin g()
F_ApiPromptString() displays a dialog box that prompts the user for a single
string value. It allows you to provide a default string, which appears in the entry field
when the dialog box appears. The dialog box has OK and Cancel buttons.
F_ApiPromptString() does not assign a value to *stringp if the user clicks
Cancel.
..............................................................................
IMPORTANT: If you are running your client on Windows, do not call
F_ApiPromptString() to prompt the user for a pathname. If the user enters a
pathname as a string, the backslash character (\) is interpreted as a special escape
character. For example, the characters \s represent a space. If the user enters the
388
FDK Programmer’s Reference
F_ApiPromptString()
...
FDK Function Reference
pathname c:\sample, this string is interpreted as c: ample. To prompt the user for
a pathname, use F_ApiChooseFile() to display a file selection dialog box.
..............................................................................
Synopsis
#include "fapi.h"
. . .
IntT F_ApiPromptString(StringT *stringp,
StringT message,
StringT stuffVal);
Arguments
stringp
The string in the input field when the user clicks OK.
message
The message that appears in the dialog box. It must be 255 characters or less.
Newline and linefeed characters are ignored.
stuffVal
The default value that appears in the input field when the dialog box is first
displayed.
..............................................................................
IMPORTANT: F_ApiPromptString() allocates memory for the string it returns.
Use F_Free() to free the string when you are done with it.
..............................................................................
FDK Programmer’s Reference 389
2
FDK Function Reference
F_ApiPushClipboard()
Returns
0 if the user clicked OK, or a nonzero value if the user clicked Cancel or an error
occurred.
If F_ApiPromptString() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
Example
The following code displays the dialog box shown in Figure 3-4:
. . .
IntT err;
StringT sres;
err = F_ApiPromptString(&sres, "String?", "Default text");
if (err) return;
F_ApiAlert(sres, FF_ALERT_CONTINUE_NOTE);
F_Free(sres);
. . .
Figure 3-4 String prompt dialog box
See also
“F_ApiPromptInt()” on page 385 and “F_ApiPromptMetric()” on page 387.
F_ApiPushClipboard()
F_ApiPushClipboard() pushes the current Clipboard contents onto the Clipboard
stack. It is useful if you want to use FDK Clipboard functions, such as F_ApiCopy()
or F_ApiCut(), without losing the Clipboard’s original contents.
390
FDK Programmer’s Reference
F_ApiQuickSelect()
...
FDK Function Reference
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiPushClipboard(VoidT);
Arguments
None.
Returns
VoidT
If F_ApiPushClipboard() fails, the API assigns the following value to
FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
Example
See “F_ApiPopClipboard()” on page 373.
See also
“F_ApiCopy()” on page 111, “F_ApiCut()” on page 119, “F_ApiPopClipboard()” on
page 373, and “F_ApiPaste()” on page 370.
F _ A p i Q u i c k S e l ec t ()
F_ApiQuickSelect() implements a quick-key interface that allows the user to
choose a string from a list of strings in the document Tag area.
F_ApiQuickSelect() highlights the document Tag area and displays a prompt and
the first string in a specified list of strings. The user can display a string in the Tag area
by typing the first few letters of the string. The user can also scroll through the strings
by pressing the up and down arrow keys. To choose a string, the user presses Return
when the string appears in the Tag area. To cancel the choice, the user clicks in the
document without pressing Return.
FDK Programmer’s Reference 391
2
FDK Function Reference
F_ApiRedisplay()
Synopsis
#include "fapi.h"
. . .
IntT F_ApiQuickSelect(F_ObjHandleT docId,
StringT prompt,
F_StringsT *stringlist);
Arguments
docId
The ID of the document containing the Tag area in which to display the
prompt
prompt
The prompt that appears in the Tag area
stringlist
The list of strings from which the user can choose
Returns
An index into the array of strings specified by stringlist or -1 if the user cancels
the quick selection.
If F_ApiQuickSelect() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
FE_BadDocId
The specified document ID is invalid
Example
See “Implementing quick keys” in the FDK Programmer’s Guide.
F _ A p i R e d i sp l a y ( )
F_ApiRedisplay() updates the display for a specified document to reflect any
changes that occurred while FP_Displaying was set to False. If you have set
FP_Displaying to False and subsequently reset it to True, you should call
F_ApiRedisplay() to redisplay each document you modified.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiRedisplay(F_ObjHandleT docId);
392
FDK Programmer’s Reference
F_ApiRedisplay()
...
FDK Function Reference
Arguments
docId
The ID of the document to be redisplayed
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiRedisplay() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
Example
The following code disables redisplaying, and then reenables it and redisplays all the
documents in the session:
. . .
F_ObjHandleT docId;
F_ApiSetInt(0, FV_SessionId, FP_Displaying, False);
/* Code to change documents without reformatting goes here.
*/
F_ApiSetInt(0, FV_SessionId, FP_Displaying, True);
/* Redisplay all the documents in the session. */
docId = F_ApiGetId(0, FV_SessionId, FP_FirstOpenDoc);
while (docId)
{
F_ApiRedisplay(docId);
docId = F_ApiGetId(FV_SessionId, docId,
FP_NextOpenDocInSession);
}
. . .
See also
“F_ApiReformat()”.
FDK Programmer’s Reference 393
2
FDK Function Reference
F_ApiReformat()
F_ApiReformat()
F_ApiReformat() reformats the specified document. If you have disabled and
subsequently reenabled reformatting by setting the session property,
FP_Reformatting, you should then call F_ApiReformat() to reformat each
changed document in the session.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiReformat(F_ObjHandleT docId);
Arguments
docId
The ID of the document to reformat
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiReformat() fails, the API assigns the following value to FA_errno.
394
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FDK Programmer’s Reference
F_ApiRehyphenate()
...
FDK Function Reference
Example
The following code disables reformatting, and then reenables it and reformats all the
documents in the session:
. . .
F_ObjHandleT docId;
F_ApiSetInt(0, FV_SessionId, FP_Reformatting, False);
/* Code to change documents without reformatting goes here.
*/
F_ApiSetInt(0, FV_SessionId, FP_Reformatting, True);
/* Reformat all the documents in the session. */
docId = F_ApiGetId(0, FV_SessionId, FP_FirstOpenDoc);
while (docId)
{
F_ApiReformat(docId);
docId = F_ApiGetId(FV_SessionId, docId,
FP_NextOpenDocInSession);
}
. . .
F_ApiRehyphenate()
F_ApiRehyphenate() rehyphenates a specified document based on changes the user
has made to words’ hyphenation points.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiRehyphenate(F_ObjHandleT docId);
Arguments
docId
The ID of the document to rehyphenate
Returns
FE_Success if it succeeds, or an error code if an error occurs.
FDK Programmer’s Reference 395
2
FDK Function Reference
F_ApiRenameComponentOfProject()
If F_ApiRehyphenate() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Bad document or book ID.
FE_WrongProduct
Current version of FrameMaker does not support this operation.
FE_SystemError
Couldn’t allocate memory.
Example
The following code rehyphenates the active document:
. . .
F_ApiRehyphenate(F_ApiGetId(0, FV_SessionId, FP_ActiveDoc));
. . .
F_ApiRenameComponentOfProject()
F_ApiRenameComponentOfProject() renames any component of the project.
Synopsis
#include “fapi.h”
. . .
VoidT F_ApiRenameComponentofProject FARGS(ConStringT
strComponentFullPath, ConStringT strNewName);
Arguments
strComponentFullPath
The absolute path of the component to be renamed.
strNewName
The new name of the component.
Returns
VoidT
396
FDK Programmer’s Reference
F_ApiResetEqnSettings()
...
FDK Function Reference
Example
The following code is used to rename the file or folder of the project by specifying its
absolute location.
. . .
ConStringT strComponentFullPath =
"C:\Sample_Project\book.ditamap";
ConStringT strNewName = "newbook.ditamap";
. . .
F_ApiRenameComponentofProject(strComponentFullPath, strNewName);
. . .
See also
“F_ApiNewProject()” on page 335(), “F_ApiOpenProject()” on page 369,
“F_ApiSaveProject()” on page 408, “F_ApiAddLocationToProject()” on page 67,
“F_ApiDeleteComponentFromProject()” on page 142,
“F_ApiEditComponentOfProject()” on page 157,
“F_ApiExploreComponentOfProject()” on page 161,
F_ApiResetEqnSettings()
F_ApiResetEqnSettings() resets the document equation settings to the default
settings.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiResetEqnSettings(F_ObjHandleT docId);
Arguments
docId
The ID of the document for which to reset equation settings
Returns
FE_Success if it succeeds, or an error code if an error occurs.
FDK Programmer’s Reference 397
2
FDK Function Reference
F_ApiResetReferenceFrames()
If F_ApiResetEqnSettings() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Bad document or book ID
FE_WrongProduct
Current FrameMaker product doesn’t support this operation
FE_SystemError
Couldn’t allocate memory
Example
The following code resets the equation settings for the active document:
. . .
F_ApiResetEqnSettings(F_ApiGetId(0,FV_SessionId, FP_ActiveDoc));
. . .
F_ApiResetReferenceFrames()
F_ApiResetReferenceFrames() resets the reference frames in the specified
document. It is useful for updating a document after you have programmatically
changed a reference frame that is referenced by paragraphs in the document.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiResetReferenceFrames(F_ObjHandleT docId);
Arguments
docId
The ID of the document for which to reset reference frames
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiResetReferenceFrames() fails, the API assigns one of the following
values to FA_errno.
398
FA_errno value
Meaning
FE_BadDocId
Bad document or book ID
FDK Programmer’s Reference
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support this operation
FE_SystemError
Couldn’t allocate memory
...
FDK Function Reference
F_ApiRestartPgfNumbering()
Example
The following code resets reference frames for the active document:
. . .
F_ApiResetReferenceFrames(F_ApiGetId(0, FV_SessionId,
FP_ActiveDoc));
. . .
F_ApiRestartPgfNumbering()
F_ApiRestartPgfNumbering() restarts the paragraph numbering for a specified
document. For more information on paragraph numbering, see your FrameMaker
product user documentation.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiRestartPgfNumbering(F_ObjHandleT docId);
Arguments
docId
The ID of the document for which to restart paragraph numbering
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiRestartPgfNumbering() fails, the API assigns one of the following
values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Bad document or book ID
FE_WrongProduct
Current FrameMaker product doesn’t support books
FE_SystemError
Couldn’t allocate memory
FDK Programmer’s Reference 399
2
FDK Function Reference
F_ApiReturnValue()
Example
The following code restarts paragraph numbering for the active document:
. . .
F_ApiRestartPgfNumbering(F_ApiGetId(0, FV_SessionId,
FP_ActiveDoc));
. . .
F _ A p i R e t u r n Va l u e ( )
F_ApiReturnValue() sets a return value for a client-defined callback. It allows a
client to provide status information to the FrameMaker product or client that called the
callback. You can call it in the following callbacks:

F_ApiDialogEvent()

F_ApiNotify()
F_ApiReturnValue() is useful for canceling FrameMaker product operations.
When your client receives a FA_PreNotificationPoint notification for an
operation, it can cancel the operation by calling F_ApiReturnValue() with
retval set to FR_CancelOperation. For example, if your client’s
F_ApiNotify() callback responds to all FA_Note_PrePrint notifications by
calling F_ApiReturnValue() with retval set to FR_CancelOperation, the
FrameMaker product cancels all print operations.
Your client can also call F_ApiReturnValue() to respond to a
FA_Note_ClientCall notification. The API returns the value specified by retval
to the client that called F_ApiCallClient().
Your client can also call F_ApiReturnValue() in a F_ApiDialogEvent()
callback to prevent the FrameMaker product from closing a modal dialog box.
Your client can call F_ApiReturnValue() several times in a callback function. The
last call it makes before the callback returns overrides any previous calls.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiReturnValue(IntT retval);
400
FDK Programmer’s Reference
F_ApiReturnValue()
...
FDK Function Reference
Arguments
retval
The value to return
You can set retval to any integer. If you client sets retval in response to one of
the following notifications, it can use the listed constants.
Notification
Values client can pass to
F_ApiReturnValue()
FA_Note_DisplayClient
TiDialog
FR_Displayed
TiDialog
The client has displayed
its version of the Text
Inset Properties dialog
box
FR_DisplayedXRe
fDialog
If the client displays or
updates its crossreference dialog, it sets
the return value as
FR_DisplayedXRefD
ialog.If this return
value is not set,
FrameMaker assumes
that the client did not
display any dialog and
the standard crossreference dialog is
displayed.
FA_PreNotificationPoint
FR_Cancel
Operation
Cancel the operation for
which the notification
was issued
FA_Note_PreSaveAsPDF
Dialog
FR_Cancel
Operation
Cancel the Save as PDF
operation
FR_SkipStep
Do not display the
Acrobat Settings dialog
box
FA_Note_PostSaveAsPDF
Dialog
FR_Cancel
Operation
Cancel the Save as PDF
operationa
FA_Note_PreDistill
FR_Cancel
Operation
Cancel the Save as PDF
operation
FA_Note_ClientCall
Any value recognized
by the client that called
F_ApiCallClient(
)
Client-defined
FA_Note_DisplayClientXRef
Dialog
Meaning
FDK Programmer’s Reference 401
2
FDK Function Reference
F_ApiReturnValue()
Notification
Values client can pass to
F_ApiReturnValue()
Meaning
The ID of the
document into which
the file was filtered
The document was
filtered successfully
0
The document was not
filtered successfully
FA_Note_IsCommandEnabled
FR_CommandEnabl
ed
Return value to be used
in response to
notification
FA_Note_IsCommand
Enabled if command
should be enabled.
FA_Note_IsCommandEnabled
FR_CommandDisab
led
Return value to be used
in response to
notification
FA_Note_IsCommand
Enabled if command
should be disabled
FR_ModalCloseAlways
FR_ModalCloseAl
ways
Close the dialog when
the event handler returns
this value.
FA_Note_FilterIn
a. Note that this event occurs before the distilling operation begins. You can now cancel the operation after the
user closes Save As PDF dialog box.
If your client calls F_ApiReturnValue() for notifications other than those listed
above, it has no effect.
A client can also call F_ApiReturnValue() in a F_ApiDialogEvent() callback
that responds to actions in a client-defined modal dialog box. Normally, when the user
clicks a button in a client-defined modal dialog box, the FrameMaker product calls the
client’s F_ApiDialogEvent() callback and then closes the dialog box. However, if
the client’s F_ApiDialogEvent() callback calls F_ApiReturnValue() with
retVal set to FR_DialogStayUp, the FrameMaker product does not close the
dialog box. The following table lists the values a client can pass to
F_ApiReturnValue() in an F_ApiDialogEvent() callback.
402
Values client can pass to F_ApiReturnValue()
Meaning
FR_DialogStayUp
Do not close the modal dialog box in which
the event occurred
Any other value
Close the modal dialog box
FDK Programmer’s Reference
F_ApiReturnValue()
...
FDK Function Reference
Returns
The value of the retval parameter the previous time F_ApiReturnValue() was
called in the current callback function.
If F_ApiReturnValue() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
Example
See “F_ApiCallClient()” and “Handling user actions in multiple modeless dialog
boxes” in the FDK Programmer’s Guide.
See also
“F_ApiDialogEvent()” on page 151, “F_ApiNotify()” on page 355, and
“F_ApiCallClient()” on page 89.
Stru cture d
F_ApiRun()
F_ApiRun() provides the minimum functionality required in an FDK client’s
main() function.
..............................................................................
IMPORTANT: F_ApiRun() is available only to Windows RPC clients.
..............................................................................
Synopsis
#include "fapi.h"
. . .
IntT F_ApiRun(VoidT);
Arguments
None.
Returns
FE_Success if it succeeds, or a nonzero value if an error occurs.
FDK Programmer’s Reference 403
2
FDK Function Reference
F_ApiReturnValue()
C++ clients that need to include their own main() functions can call F_ApiRun().
F_ApiRun() is defined as:
IntT F_ApiRun()
{
StringT s;
if (s = F_ApiStartUp(NULL))
F_ApiErr(s);
else
while (!FA_bailout)
F_ApiService(0);
F_ApiShutDown();
return(s!=NULL);
}
Example
The following code can be used as the main function for an FDK client written in C++:
int main() {return (F_ApiRun());}
See also
“F_ApiShutDown()” on page 462, “F_ApiService()” on page 412, and “F_ApiErr()” on
page 160.
404
FDK Programmer’s Reference
F_ApiSave()
3
...
FDK Reference
FrameMaker+SGMLFDK Fnction Reference
F_ApiSave()
F_ApiSave() saves a document or book. It allows you to script the way the
FrameMaker product saves the file and to specify responses to warnings and messages
that arise while the file is being saved. You can save a file under its current name or save
it as a new file.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiSave(F_ObjHandleT Id,
StringT saveAsName,
F_PropValsT *saveParamsp,
F_PropValsT **saveReturnParamspp);
Arguments
Id
The ID of the document or book to save.
saveAsName
The pathname for saving the document or book.
saveParamsp
A property list that tells the FrameMaker product how to save the
file and how to respond to errors and other conditions. Use
F_ApiGetSaveDefaultParams() or
F_ApiAllocatePropVals() to create and allocate memory
for this property list. To use the default list, specify NULL.
saveReturnParamspp
A property list that returns information about how the
FrameMaker product saved the file.
..............................................................................
IMPORTANT: Always initialize the pointer to the property list that you specify for
saveReturnParamspp to NULL before you call F_ApiSave().
..............................................................................
To get a property list for saveParamsp, you can use
F_ApiGetSaveDefaultParams() and modify individual properties in the list it
returns, or you can create a list from scratch. For information on
F_ApiGetSaveDefaultParams(), see “F_ApiGetSaveDefaultParams()” on
page 236. For information on creating a property list from scratch, see “Creating a
saveParamsp script from scratch” in the FDK Programmer’s Guide.
FDK Programmer’s Reference 405
3
FDK Function Reference
F_ApiSave()
The property list returned in saveReturnParamspp has the properties shown in the
following table.
Property
Meaning and possible values
FS_SavedFileName
A string that specifies the saved file’s full pathname.
FS_SaveNativeError
The error condition. If the file is saved successfully, it is
set to FE_Success. See the table below for the
possible values.
FS_SaveStatus
A bit field indicating what happened when the file was
saved. See the table below for the possible values.
Both the FS_SaveNativeError property and the FA_errno global variable
indicate the result of a call to F_ApiSave(). The FS_SaveStatus flags indicate
how or why this result occurred. The following table lists the possible status flags and
the FA_errno and FS_SaveNativeError values associated with them.
FS_SaveNativeError and
FA_errno values
Possible FS_SaveStatus flags
FE_Success
None.
FE_Canceled or
FE_CanceledByClient
(file wasn’t saved)
FV_FileNotWritable: file was not writable.
FV_BadSaveFileName: specified file name is not allowed by
the operating system.
FV_BadFileId: the file’s operating system ID was bad.
FV_BadSaveScriptValue: script specified by
saveParamsp had an invalid value.
FV_CancelSaveFileIsInUse: The file is in use and the user
did not or could not reset the lock. Or the file is in use, and the
FS_FileIsInUse script is set to FV_DoCancel, or it is set to
FV_ResetLockAndContinue but the FrameMaker product
could not reset the lock.
FV_CancelSaveModDateChanged: The file has changed since
the last time it was opened or saved in the current session.
FV_FileWasInUse: file was in use.
FV_LockCouldntBeReset: file lock couldn’t be reset.
FV_LockWasReset: file lock was reset.
FV_LockNotReset: file lock was not reset.
406
FDK Programmer’s Reference
F_ApiSave()
FS_SaveNativeError and
FA_errno values
...
FDK Reference
Possible FS_SaveStatus flags
FE_Canceled or
FE_CanceledByClient
(file wasn’t saved)
FV_FileIsViewOnly: file was View Only.
FE_WrongProduct
None. Current FrameMaker product doesn’t support this
operation
FE_FailedState or
FE_BadParameter
None. The filename was invalid.
FE_FilterFailed
FV_InvalidSaveFilter: The filter specified by
FS_SaveFileTypeHint is not installed, or the syntax for
FS_SaveFileTypeHint is invalid.
After you are done with the property lists you use to call F_ApiSave(), use
F_ApiDeallocatePropVals() to deallocate the memory they use.
Returns
The ID of the document it saved, or 0 if it fails.
Example
See “Example” and “F_ApiGetSaveDefaultParams()” in the FDK Programmer’s
Guide. .
See also
“F_ApiDeallocateStructureType()” on page 121, “F_ApiGetSaveDefaultParams()” on
page 236, “F_ApiPrintSaveStatus()” on page 379, and “F_ApiSimpleSave()” on
page 473.
FDK Programmer’s Reference 407
3
FDK Function Reference
F_ApiSaveProject()
F_ApiSaveProject()
F_ApiSaveProject() saves the current project.
Synopsis
#include “fapi.h”
. . .
VoidT F_ApiSaveProject FARGS(VoidT);
Arguments
VoidT
Returns
VoidT
Example
The following code saves the currently active project.
. . .
F_ApiSaveProject();
. . .
See also
“F_ApiNewProject()” on page 335, “F_ApiOpenProject()” on page 369,
“F_ApiAddLocationToProject()” on page 67, “F_ApiDeleteComponentFromProject()”
on page 142, “F_ApiEditComponentOfProject()” on page 157,
“F_ApiExploreComponentOfProject()” on page 161,
“F_ApiRenameComponentOfProject()” on page 396
408
FDK Programmer’s Reference
F_ApiScrollBox()
...
FDK Reference
F_ApiScrollBox()
F_ApiScrollBox() displays an array of items and allows the user to
choose one.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiScrollBox(IntT *selected_item,
StringT title,
F_StringsT *stringslist
IntT default);
Arguments
selected_item
The index of the selected item when the user clicks OK (or double-clicks
an item). The index of the first item is 0.
title
The title that appears on the dialog box.
stringslist
The list of items to appear in the scroll list.
default
The index of the item that is selected when the dialog box first appears.
For no default, specify -1.
..............................................................................
IMPORTANT: If you set default to -1, always check to make sure the value
returned in selected_item is 0 or greater before you use it as an array index. If
you set default to -1 and the user clicks OK without choosing an item, the value
returned in selected_item will be -1.
..............................................................................
F_StringsT is defined as:
typedef struct {
UIntT len; /* Number of strings */
StringT *val; /* Array of strings */
} F_StringsT;
Returns
0 if the user clicked OK, or a nonzero value if the user clicked Cancel or an error
occurred.
FDK Programmer’s Reference 409
3
FDK Function Reference
F_ApiScrollBox()
If F_ApiScrollBox() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_Transport
The user clicked Cancel, or a transport error occurred
Example
The following code displays a scroll list dialog box, with a default item labeled “Kurt”:
. . .
#include "futils.h"
IntT choice, err;
UCharT msg[256];
F_StringsT names;
StringT nameList[4];
nameList[0]
nameList[1]
nameList[2]
nameList[3]
=
=
=
=
(StringT)"Kelly";
(StringT)"Jens";
(StringT)"Kurt";
(StringT)"Heycke";
names.len = 4;
names.val = nameList;
err = F_ApiScrollBox(&choice, "Choose a name.", &names, 2);
if (!err)
F_Sprintf(msg, "The name is %s.", nameList[choice]);
else
F_Sprintf(msg, "Cancel was pressed");
F_ApiAlert(msg, FF_ALERT_CONTINUE_NOTE);
. . .
See also
“F_ApiChooseFile()” on page 93.
410
FDK Programmer’s Reference
...
FDK Reference
F_ApiScrollToText()
F _ A p i S c ro l l To Te x t( )
F_ApiScrollToText() scrolls the document window to a specified text range. It
scrolls to the end of the range that is closest to the current display position.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiScrollToText(F_ObjHandleT docId,
F_TextRangeT *textRangep);
Arguments
docId
The ID of the document containing the text range
textRangep
The text range to which to scroll
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiScrollToText() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_NotTextObject
One or both of the IDs specified by textRangep is not the ID of
an object that contains text, such as a paragraph (FO_Pgf) or a
flow (FO_Flow)
FE_OffsetNotFound
Offset specified for the text range couldn’t be found in the
specified paragraph or text line
FE_BadRange
Specified text range is invalid
FDK Programmer’s Reference
411
3
FDK Function Reference
F_ApiService()
Example
The following code scrolls the document window to the insertion point or the end of the
text selection:
. . .
F_ObjHandleT docId;
F_TextRangeT tr;
/* Get the insertion point or text selection. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if (tr.beg.objId == 0) return;
/* Scroll to it. */
F_ApiScrollToText(docId, &tr);
. . .
See also
“F_ApiCenterOnText()” on page 90.
F_ApiService()
F_ApiService() services calls from the FrameMaker product to the API.
F_ApiService() is useful only if you are providing a replacement for
F_ApiRun()—for example, if your client needs to select on its own file descriptors.
On Windows, F_ApiService parameters are ignored. F_ApiService() waits for and
dispatches a single Windows message. If your application contains its own message
processing loop you need not call this routine. It is not generally feasible for console
applications to receive FDK notifications since there is no way for them to both wait for
user imput and call F_ApiService(). Consequently, console applications should not
register for notifications.
..............................................................................
IMPORTANT: F_ApiService() is only available to Windows RPC clients.
..............................................................................
Synopsis
#include "fapi.h"
. . .
IntT F_ApiService(IntT *imaskp);
412
FDK Programmer’s Reference
F_ApiService()
...
FDK Reference
Arguments
imaskp
The address of an integer select() mask.
Returns
The number of bits the call to select() selected, if any.
If you want other file descriptors to be active at the same time as the API “listen” port,
set imaskp to the address of an integer select() mask that you want to OR into
the F_ApiService() function’s call to select(). If the call to select() selects
on any of the parameter’s file descriptors, F_ApiService() returns the number of the
bits, and puts the bits into *imaskp.
Example
The following code sets as the input file descriptor the shell window from which you
start the FrameMaker product and processes requests from that file descriptor:
. . .
/* Set the shell window as the input fd. */
in_fd = open("/dev/tty",O_RDONLY);
/* Start API. If it fails to start, exit and print error.*/
if (s = F_ApiStartUp(NULL))
F_ApiErr(s);
else
while (!FA_bailout)
{
myfds = 1<<in_fd;
F_ApiService(&myfds);
if (myfds)
{
/* . . . run some code . . .*/
}
}
. . .
Stru cture d
F_ApiSetAttributeDefs( )
F_ApiSetAttributeDefs() sets an element definition’s attribute definitions.
FDK Programmer’s Reference 413
3
FDK Function Reference
F_ApiService()
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetAttributeDefs(
F_ObjHandleT docId,
F_ObjHandleT elemDefId,
F_AttributeDefsT *setVal);
Arguments
docId
The ID of the document containing the element definition
elemDefId
The ID of the element definition for which to get attribute definitions
setVal
The attribute definitions to set for the element definition
Returns
VoidT.
If F_ApiSetAttributeDefs() fails, the API assigns one of the following values to
FA_errno.
414
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FV_InvAttributeDef
Invalid attribute name or value
FE_WrongProduct
Current FrameMaker product isn’t supported
FDK Programmer’s Reference
F_ApiService()
...
FDK Reference
Example
The following code sets the attribute definitions for the Article element definition so
that it appears as shown in Figure 3-1:
. . .
F_ObjHandleT docId, edefId;
F_AttributeDefsT attributeDefs;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
edefId = F_ApiGetNamedObject(docId, FO_ElementDef, "Article");
attributeDefs.len = 2;
attributeDefs.val = (F_AttributeDefT *)
F_Alloc(2*sizeof(F_AttributeDefT), DSE);
attributeDefs.val[0].name = F_StrCopyString("Author");
attributeDefs.val[0].required = True;
attributeDefs.val[0].attrType = FV_AT_STRING;
attributeDefs.val[1].name = F_StrCopyString("Security");
attributeDefs.val[1].required = False;
attributeDefs.val[1].attrType = FV_AT_CHOICES;
attributeDefs.val[1].choices.len = 3;
attributeDefs.val[1].choices.val = (StringT *)
F_Alloc(3*sizeof(StringT), DSE);
attributeDefs.val[1].choices.val[0] =
F_StrCopyString("Top Secret");
attributeDefs.val[1].choices.val[1] =
F_StrCopyString("Classified");
attributeDefs.val[1].choices.val[2] =
F_StrCopyString("Unclassified");
F_ApiSetAttributeDefs(docId, edefId, &attributeDefs);
. . .
Element (Container): Article
General rule: Para+, Section*
Attribute list
1. Name: Author
String
Required
2. Name: Security
Choice
Optional
Choices: Top Secret, Classified, Unclassified
Figure 3-1 Article element definition
See also
“F_ApiGetAttributeDefs()” on page 174.
FDK Programmer’s Reference 415
3
Stru cture d
FDK Function Reference
F_ApiService()
F_ApiSetAttribu tes()
F_ApiSetAttributes() sets an element’s attributes.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetAttributes(
F_ObjHandleT docId,
F_ObjHandleT elemId,
F_AttributesT *setVal);
Arguments
docId
The ID of the document containing the element
elemId
The ID of the element for which to set attributes
setVal
The attributes to apply to the specified element
F_ApiSetAttributes() sets only the attributes you specify in the
F_AttributesT structure you pass in setVal. If the element has an attribute that you
have not specified in the F_AttributesT structure, F_ApiSetAttributes()
does not change the attribute.
If you specify an attribute in the F_AttributesT structure that is not defined in the
element’s element definition, F_ApiSetAttributes() adds the attribute to the
element as an undefined attribute.
Each attribute in an element is defined by an F_AttributeT structure, which is
defined as:
struct {
StringT name;
F_StringsT values;
UByteT valflags;
UByteT allow;
} F_AttributeT
To delete an attribute value, set F_AttributeT.values.len = 0 and
F_AttributeT.values.val = NULL.
416
FDK Programmer’s Reference
F_ApiService()
...
FDK Reference
Returns
VoidT.
If F_ApiSetAttributes() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FV_InvAttribute
Def
Invalid attribute name or value
FE_WrongProduct
Current FrameMaker product isn’t supported
Example
The following code sets the Author attribute to jkh and the Security attribute to
Classified for the selected element:
. . .
F_ObjHandleT docId;
F_AttributesT attributes;
F_ElementRangeT er;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
er = F_ApiGetElementRange(FV_SessionId,
docId, FP_ElementSelection);
attributes.len = 2;
attributes.val = (F_AttributeT *)
F_Alloc(2*sizeof(F_AttributeT), DSE);
attributes.val[0].name = F_StrCopyString("Author");
attributes.val[0].values.len = 1;
attributes.val[0].values.val = (StringT *)
F_Alloc(sizeof(StringT), DSE);
attributes.val[0].values.val[0] = F_StrCopyString("jkh");
attributes.val[1].name = F_StrCopyString("Security");
attributes.val[1].values.len = 1;
attributes.val[1].values.val = (StringT *)
F_Alloc(sizeof(StringT), DSE);
attributes.val[1].values.val[0] = F_StrCopyString("Classified");
F_ApiSetAttributes(docId, er.beg.childId, &attributes);
. . .
FDK Programmer’s Reference 417
3
FDK Function Reference
F_ApiSetClientDir()
See also
“F_ApiGetAttributes()” on page 176.
F _ A p i S e tC l i e n tD i r ( )
F_ApiSetClientDir() sets the default directory for client operations, such as
opening resources. It overrides the default directory setting.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetClientDir(StringT dirName);
Arguments
dirName
The name of the directory to set as the default directory for client operations.
Returns
VoidT.
Example
The following code sets the client’s default directory to /tmp:
. . .
F_ApiSetClientDir("/tmp");
. . .
See also
“F_ApiClientDir()” on page 99, “F_ApiClientName()” on page 100,
“F_ApiOpenResource()” on page 370.
F_ApiSetCurrentWorkspace()
F_ApiSetCurrentWorkspace() sets the current workspace to the specified string.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetCurrentWorkspace(ConStringT);
418
FDK Programmer’s Reference
...
FDK Reference
F_ApiSetCurrentWorkspace()
Arguments
ConStringT
Returns
VoidT
Example
The following code sets ‘Review’ as the current workspace.
. . .
F_ApiSetCurrentWorkspace((ConStringT)”Review”);
. . .
Stru cture d
F_ApiSetElementRange()
F_ApiSetElementRange() sets an element range (F_ElementRangeT) property.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetElementRange(
F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum,
F_ElementRangeT *setVal);
FDK Programmer’s Reference 419
3
FDK Function Reference
F_ApiSetCurrentWorkspace()
Arguments
docId
The ID of the document, book, or session containing the object whose
property you want to set. If the object is a session, specify
FV_SessionId.
objId
The ID of the object whose property you want to set.
propNum
The property to set. Specify an API-defined constant, such as
FP_ElementSelection.
setVal
The element range to set the property to.
The F_ElementRangeT structure specifies an element range. The
F_ElementRangeT structure is defined as:
typedef struct {
F_ElementLocT beg; /* Beginning of the element range. */
F_ElementLocT end; /* End of the element range. */
} F_ElementRangeT;
The F_ElementLocT structure specifies a location within an element. It is defined as:
typedef struct {
F_ObjHandleT parentId; /* Parent element ID. */
F_ObjHandleT childId; /* Child element ID. */
IntT offset; /* Offset within child/parent element. */
} F_ElementLocT;
To specify a selection that includes the root element, set beg.parentId to 0,
beg.childId to the ID of the root element, and end.childId to 0.
Returns
VoidT.
If F_ApiSetElementRange() fails, the API assigns one of the following values to
FA_errno.
420
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
One or more invalid object ids were specified in the
F_ElementRangeT that was passed in the setVal argument
FE_WrongProduct
Current FrameMaker product isn’t supported
FDK Programmer’s Reference
F_ApiSetId()
...
FDK Reference
Example
The following code selects the entire parent element of the selected element (or the
element containing the text selection):
. . .
F_ObjHandleT docId, parentId;
F_ElementRangeT er;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
er = F_ApiGetElementRange(FV_SessionId,
docId, FP_ElementSelection);
parentId = F_ApiGetId(docId, er.beg.childId, FP_ParentElement);
er.end.parentId = er.beg.parentId = F_ApiGetId(docId, parentId,
FP_ParentElement);
/* If the selected element is a child of the highest level
** element, the client returns here.
*/
if(!er.end.parentId) return;
er.beg.childId = parentId;
er.beg.offset = er.end.offset = 0;
er.end.childId = F_ApiGetId(docId, parentId,
FP_NextSiblingElement);
F_ApiSetElementRange(0, docId, FP_ElementSelection, &er);
. . .
See also
“F_ApiGetElementRange()” on page 181.
F_ApiSetId()
F_ApiSetId() sets an ID property.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetId(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum,
F_ObjHandleT setVal);
FDK Programmer’s Reference 421
3
FDK Function Reference
F_ApiSetId()
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to set. If the object is a session, specify 0.
objId
The ID of the object whose property you want to set.
propNum
The property to set (for example, FP_NextGraphicInFrame).
setVal
The value to which to set the property.
Returns
VoidT.
If F_ApiSetId() fails, the API assigns one of the following values to FA_errno.
422
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name is illegal
FE_BadNewFrame
The API can’t move the specified object to this frame
FE_BadNewGroup
The API can’t move the specified object to this graphic object
group (FO_Group)
FE_BadNewSibling
Object can’t be made a sibling of the specified object
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_BadRange
Specified text range is invalid
FE_GroupSelect
The API can’t select or deselect an object in the specified group
FE_HiddenPage
Value must be the ID of a hidden page (FO_HiddenPage)
FE_NotBookComponent
Value must be the ID of a book component
(FO_BookComponent)
FE_NotFrame
Value must be the ID of a frame
FE_NotGraphic
Value must be the ID of a graphic object
FE_NotGroup
Value must be the ID of a graphic object group (FO_Group)
FE_NotInMenu
Value must be the ID of a command (FO_Command) or a menu
(FO_Menu) in the specified menu
FE_NotMenu
Object must be a menu (FO_Menu)
FDK Programmer’s Reference
F_ApiSetId()
...
FDK Reference
FA_errno value
Meaning
FE_NotTextFrame
Value must be the ID of a text column (FO_TextFrame)
FE_NotTextObject
Object must be an object that contains text, such as a paragraph
(FO_Pgf) or a flow (FO_Flow)
FE_OutOfRange
Specified property value is out of the legal range for the
specified property
FE_PageFrame
Value must be the ID of a page frame object
(FO_UnanchoredFrame)
FE_ReadOnly
Property is read-only
FE_WithinFrame
Object must be moved to a different frame first
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference 423
3
FDK Function Reference
F_ApiSetInt()
Example
The following code moves the graphic objects in the selected frame so that they appear
directly on the underlying page. It does this by making the page frame the objects’
parent. For information on page frames and how the API organizes graphics, see “How
the API represents pages” and “How the API organizes graphic objects” in the FDK
Programmer’s Guide:
. . .
F_ObjHandleT frameId, pFrameId, pgId, docId, objId, nextObjId;
frameId = 0;
/* Get ID of active document and selected frame. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
frameId = F_ApiGetId(FV_SessionId, docId,
FP_FirstSelectedGraphicInDoc);
if (!frameId) return; /* No frame has been selected. */
/* Get ID of current page and its page frame. */
pgId = F_ApiGetId(FV_SessionId, docId, FP_CurrentPage);
pFrameId = F_ApiGetId(docId, pgId, FP_PageFrame);
/* Move all the objects to current page’s page frame. */
objId = F_ApiGetId(docId, frameId, FP_FirstGraphicInFrame);
while(objId)
{
/* Change the object’s parent to be the page frame. */
nextObjId = F_ApiGetId(docId, objId, FP_NextGraphicInFrame);
F_ApiSetId(docId, objId, FP_FrameParent, pFrameId);
objId = nextObjId;
}
. . .
See also
“F_ApiGetId()” on page 192.
F_ApiSetInt()
F_ApiSetInt() sets an integer property. Integer properties include ordinal,
True/False (Boolean), and enumerated properties.
424
FDK Programmer’s Reference
F_ApiSetInt()
...
FDK Reference
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetInt(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum,
IntT setVal);
Arguments
docId
The ID of the document, dialog box, book, or session containing the object whose
property you want to set. If the object is a session, specify 0.
objId
The ID of the object whose property you want to set.
propNum
The property to set (for example, FP_ShowAll).
setVal
The value to which to set the property.
Returns
VoidT.
If F_ApiSetInt() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_CantSmooth
Object can’t be smoothed
FE_NotApiCommand
Object must be the ID of a command defined by an FDK client
FE_OutOfRange
Specified property value is out of the legal range for the specified
property
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference 425
3
FDK Function Reference
F_ApiSetIntByName()
Example
The following code turns off automatic save for a session:
. . .
F_ApiSetInt(0, FV_SessionId, FP_AutoSave, False);
. . .
See also
“F_ApiGetInt()” on page 202.
F_ApiSetIntByName()
F_ApiSetIntByName() sets an integer (IntT) inset facet.
F_ApiSetIntByName() and other F_ApiSetPropertyTypeByName()
functions use a transaction model to set facets. After you have finished setting facets,
you must commit the transaction by using F_ApiSetIntByName() to set a facet
named "" to 0.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetIntByName(F_ObjHandleT docId,
F_ObjHandleT objId,
StringT propName,
IntT setVal);
Arguments
docId
The ID of the document containing the inset whose facet you want to set
objId
The ID of the inset whose facet you want to set
propName
The name of the facet to set
setVal
The value to which to set the facet
Returns
VoidT.
426
FDK Programmer’s Reference
...
FDK Reference
F_ApiSetIntByName()
If F_ApiSetIntByName() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadName
Specified name is illegal
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
Example
The following code sets an integer facet named revision.facet to 4:
. . .
F_ObjHandleT docId, insetId;
F_ApiSetIntByName(docId, insetId, "revision.facet", 4);
F_ApiSetIntByName(docId, insetId, "", 0); /* Commit. */
. . .
See also
“F_ApiGetIntByName()” on page 204.
FDK Programmer’s Reference 427
3
FDK Function Reference
F_ApiSetInts()
F_ApiSetInts()
F_ApiSetInts() sets an F_IntsT property.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetInts(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum,
F_IntsT *setVal);
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to set
objId
The ID of the object whose property you want to set
propNum
The property to set (for example, FP_InCond)
setVal
The F_IntsT structure to which to set the property
F_IntsT is defined as:
typedef struct {
UIntT len; /* Number of IntTs */
IntT *val; /* Array of IntTs or F_ObjHandleTs */
} F_IntsT;
Returns
VoidT.
If F_ApiSetInts() fails, the API assigns one of the following values to FA_errno.
428
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_OutOfRange
Specified property value is out of the legal range for the specified
property
FDK Programmer’s Reference
F_ApiSetInts()
FA_errno value
Meaning
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
...
FDK Reference
Example
The following code sets the condition for text added at the insertion point to Comment:
. . .
F_ObjHandleT docId, commentId;
F_IntsT conditionIds;
/* Get ID of Comment tag in current document. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
commentId = F_ApiGetNamedObject(docId, FO_CondFmt, "Comment");
conditionIds.val = (IntT*) &commentId;
conditionIds.len = 1;
/* Set document’s type-in condition property to Comment ID. */
F_ApiSetInts(FV_SessionId, docId, FP_InCond, &conditionIds);
. . .
See also
“F_ApiGetInts()” on page 205.
FDK Programmer’s Reference 429
3
FDK Function Reference
F_ApiSetMetric()
F_ApiSetMetric()
F_ApiSetMetric() sets a metric (MetricT) property.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetMetric(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum,
MetricT setVal);
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to set
objId
The ID of the object whose property you want to set
propNum
The property to set (for example, FP_Leading)
setVal
The metric value to which to set the property
Returns
VoidT.
If F_ApiSetMetric() fails, the API assigns one of the following values to
FA_errno.
430
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name is illegal
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_OutOfRange
Specified property value is out of the legal range for the specified
property
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
F_ApiSetMetric()
...
FDK Reference
Example
The following code sets the zoom factor for all the documents in the current book to 200
percent:
. . .
#include "fmemory.h"
F_ObjHandleT bookId, compId, docId;
StringT docName;
bookId = F_ApiGetId(0, FV_SessionId, FP_ActiveBook);
compId = F_ApiGetId(bookId, bookId, FP_FirstComponentInBook);
while(compId) /* Traverse book components and open documents. */
{
/* Get the document’s name and open it. */
docName = F_ApiGetString(bookId, compId, FP_Name);
docId = F_ApiSimpleOpen(docName, False);
/* Set zoom. 100% = MetricT 1<<16 or 65536. */
F_ApiSetMetric(FV_SessionId, docId, FP_Zoom, 2*65536);
/* Save and close the document. */
F_ApiSimpleSave(docId, docName, False);
F_ApiDeallocateString(&docName);
F_ApiClose(docId, True);
compId = F_ApiGetId(bookId, compId, FP_NextComponentInBook);
}
. . .
For this code to work correctly, all the documents in the book must initially be closed.
See also
“F_ApiGetMetric()” on page 211.
FDK Programmer’s Reference 431
3
FDK Function Reference
F_ApiSetMetricByName()
F_ApiSetMetricByName()
F_ApiSetMetricByName() sets a metric (MetricT) inset facet.
F_ApiSetMetricByName() and other F_ApiSetPropertyTypeByName()
functions use a transaction model to set facets. After you have finished setting facets,
you must commit the transaction by using F_ApiSetIntByName() to set a facet
named "" to 0.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetMetricByName(F_ObjHandleT docId,
F_ObjHandleT objId,
StringT propName,
MetricT setVal);
Arguments
docId
The ID of the document containing the inset
objId
The ID of the inset whose facet you want to set
propName
The name of the facet to set
setVal
The value to which to set the facet
Returns
VoidT.
If F_ApiSetMetricByName() fails, the API assigns one of the following values to
FA_errno.
432
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name is illegal
FE_BadObjId
Invalid object ID
FE_BadPropType
Incorrect property type for this function
FE_OutOfRange
Specified property value is out of the legal range for the specified
property
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
...
FDK Reference
F_ApiSetMetrics()
Example
The following code sets an integer facet named height.facet to 4 inches:
. . .
#define in ((MetricT) 65536*72)
F_ObjHandleT docId, insetId;
F_ApiSetMetricByName(docId, insetId, "height.facet", 4*in);
F_ApiSetIntByName(docId, insetId, "", 0); /* Commit. */
. . .
See also
“F_ApiGetMetricByName()” on page 212.
F_ApiSetMetrics()
F_ApiSetMetrics() sets a metrics (F_MetricsT) property.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetMetrics(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum,
F_MetricsT *setVal);
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to set
objId
The ID of the object whose property you want to set
propNum
The property to query (for example, FP_TblColWidths)
setVal
The F_MetricsT structure to which to set the property
F_MetricsT is defined as:
typedef struct {
UIntT len; /* Number of metric values*/
MetricT *val; /* Array of metric values */
} F_MetricsT;
FDK Programmer’s Reference 433
3
FDK Function Reference
F_ApiSetMetrics()
Returns
VoidT.
If F_ApiSetMetrics() fails, the API assigns one of the following values to
FA_errno.
434
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_OutOfRange
Specified property value is out of the valid range for the specified
property
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
...
FDK Reference
F_ApiSetMetrics()
Example
The following code sets the line pattern of a graphic object to a 14-point dash/1-point
space dashed pattern:
. . .
#include "fmemory.h"
#define pts (MetricT) 65536
F_MetricsT dashPat;
F_ObjHandleT docId, objId;
MetricT vals[2];
/* Get IDs of active document and selected object. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
objId = F_ApiGetId(FV_SessionId, docId,
FP_FirstSelectedGraphicInDoc);
/* Create array containing dash pattern. */
dashPat.len = 2;
dashPat.val = vals;
dashPat.val[0] = 14*pts;
/* 14-pt dash */
dashPat.val[1] = pts;
/* 1-pt space */
/* Set selected object’s dash pattern. */
F_ApiSetMetrics(docId, objId, FP_Dash, &dashPat);
. . .
See also
“F_ApiGetMetrics()” on page 214.
FDK Programmer’s Reference 435
3
FDK Function Reference
F_ApiSetPoints()
F _ A p i S e tP oi n t s( )
F_ApiSetPoints() sets the array of points (or vertices) for a polygon or polyline
object.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetPoints(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum,
F_PointsT *setVal);
Arguments
docId
The ID of the document containing the object whose property you
want to set
objId
The ID of the object whose property you want to set
propNum
The property to set (for example, FP_Points)
setVal
The F_PointsT structure to which to set the property
The F_PointsT structure is defined as:
typedef struct {
UIntT len; /* Number of coordinate pairs */
F_PointT *val; /* Vector of coordinate pairs */
} F_PointsT;
The F_PointT structure, which specifies an individual x-y coordinate pair, is defined
as:
typedef struct{
MetricT
x, y; /* The coordinates */
} F_PointT;
436
FDK Programmer’s Reference
F_ApiSetPoints()
...
FDK Reference
Returns
VoidT.
If F_ApiSetPoints() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name is illegal
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_OutOfRange
Specified property value is out of the legal range for the specified
property
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
Example
The following code creates a triangle on the current page’s page frame:
FDK Programmer’s Reference 437
3
FDK Function Reference
F_ApiSetPoints()
. . .
#define pts (MetricT) 65536
F_ObjHandleT docId, pageId, pFrameId, polyId;
F_PointsT points;
F_PointT vals[3];
/* Get IDs of active document, current page, and page frame. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
pageId = F_ApiGetId(docId, docId, FP_CurrentPage);
pFrameId = F_ApiGetId(docId, pageId, FP_PageFrame);
/* Set up array of triangle’s vertices. */
points.val = vals;
points.len = 3;
points.val[0].x = 60*pts;
points.val[0].y = 20*pts;
points.val[1].x = 20*pts;
points.val[1].y = 80*pts;
points.val[2].x = 80*pts;
points.val[2].y = 80*pts;
/* Create the polygon on page frame, then set its vertices. */
polyId = F_ApiNewGraphicObject(docId, FO_Polygon, pFrameId);
F_ApiSetPoints(docId, polyId, FP_Points, &points);
. . .
See also
“F_ApiGetPoints()” on page 230.
438
FDK Programmer’s Reference
F_ApiSetProps()
...
FDK Reference
F_ A p i S e t P ro ps()
F_ApiSetProps() applies a property list to a specified object.
You can use F_ApiSetProps() and F_ApiGetProps() to copy formats from
one object to another. For example, you can copy properties from one graphic object to
another, from a paragraph format to a paragraph, or from one paragraph to another
paragraph.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetProps(F_ObjHandleT docId,
F_ObjHandleT objId,
F_PropValsT *setVal);
Arguments
docId
The ID of the dialog box or document containing the object
objId
The ID of the object that you want to apply the property list to
setVal
The property list
Returns
VoidT.
If F_ApiSetProps() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name is illegal
FE_BadNewFrame
The API can’t move the specified object to this frame
FE_BadNewGroup
The API can’t move the specified object to this graphic object
group (FO_Group)
FE_BadNewSibling
Object can’t be made a sibling of the specified object
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_BadRange
Specified text range is invalid
FDK Programmer’s Reference 439
3
440
FDK Function Reference
F_ApiSetProps()
FA_errno value
Meaning
FE_CantSmooth
Object can’t be smoothed
FE_DupName
Property can’t be set to this name because it is already used by
another object
FE_GenRuleAmbiguous
General rule in structured document was ambiguous
FE_GenRule
ConnectorExpected
General rule in structured document missing connector
FE_GenRuleItem
Expected
General rule in structured document missing
rule item
FE_GenRuleLeft
BracketExpected
General rule in structured document missing left bracket
FE_GenRuleMixed
Connectors
General rule in structured document has mixed connectors
FE_GenRuleRight
BracketExpected
General rule in structured document missing right bracket
FE_GenRuleSyntax
Error
General rule in structured document has syntax error
FE_GroupSelect
The API can’t select or deselect an object in the specified
group
FE_HiddenPage
Value must be the ID of a hidden page (FO_HiddenPage)
FE_InvContextSpec
The API encountered an invalid context specification in a
Structured FrameMaker document
FE_NotBookComponent
Value must be the ID of a book component
(FO_BookComponent)
FE_NotFrame
Value must be the ID of a frame
FE_NotGraphic
Value must be the ID of a graphic object
FE_NotGroup
Value must be the ID of a graphic object group (FO_Group)
FE_NotTextFrame
Value must be the ID of a text column (FO_TextFrame)
FE_NotTextObject
Object must be an object that contains text, such as a
paragraph (FO_Pgf) or a flow (FO_Flow)
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in the
specified paragraph or text line
FE_OutOfRange
Specified property value is out of the legal range for the
specified property
FE_PageFrame
Value must be the ID of a page frame object
(FO_UnanchoredFrame)
FDK Programmer’s Reference
...
FDK Reference
F_ApiSetPropVal()
FA_errno value
Meaning
FE_ReadOnly
Property is read-only
FE_WithinFrame
Object must be moved to a different frame first
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
Example
See “Getting and setting property lists” in the FDK Programmer’s Guide.
F _ A p i S e t P ro p Val ( )
F_ApiSetPropVal() sets a property of any type. If you know a property’s type, it is
normally easier to call an F_ApiSetPropertyType() function, such as
F_ApiSetInt(), to set it.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetPropVal(F_ObjHandleT docId,
F_ObjHandleT objId,
F_PropValT *setVal);
Arguments
docId
The ID of the document, book, or session containing the object whose property
you want to set. If the object is a session, specify 0.
objId
The ID of the object whose property you want to set.
setVal
The property to set for the specified object.
Returns
VoidT.
FDK Programmer’s Reference 441
3
FDK Function Reference
F_ApiSetPropVal()
If F_ApiSetPropVal() fails, the API assigns one of the following values to
FA_errno.
442
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name is illegal
FE_BadNewFrame
The API can’t move the specified object to this frame
FE_BadNewGroup
The API can’t move the specified object to this graphic object
group (FO_Group)
FE_BadNewSibling
Object can’t be made a sibling of the specified object
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_BadRange
Specified text range is invalid
FE_GroupSelect
The API can’t select or deselect an object in the specified group
FE_HiddenPage
Value must be the ID of a hidden page (FO_HiddenPage)
FE_NotBookComponent
Value must be the ID of a book component
(FO_BookComponent)
FE_NotFrame
Value must be the ID of a frame
FE_NotGraphic
Value must be the ID of a graphic object
FE_NotGroup
Value must be the ID of a graphic object group (FO_Group)
FE_NotTextFrame
Value must be the ID of a text column (FO_TextFrame)
FE_NotTextObject
Object must be an object that contains text, such as a paragraph
(FO_Pgf) or a flow (FO_Flow)
FE_PageFrame
Value must be the ID of a page frame object
(FO_UnanchoredFrame)
FE_ReadOnly
Property is read-only
FE_WithinFrame
Object must be moved to a different frame first
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
F_ApiSetString()
...
FDK Reference
Example
The following code turns off the automatic save feature:
. . .
F_PropValT setVal;
setVal.propIdent.num = FP_AutoSave;
setVal.propVal.valType = FT_Integer;
setVal.propVal.u.ival = False;
F_ApiSetPropVal(0, FV_SessionId, &setVal);
. . .
See also
“F_ApiGetProps()” on page 233 and “F_ApiSetProps()” on page 439.
F _ A p i S e t S t r i n g( )
F_ApiSetString() sets a string (StringT) property.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetString(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum,
StringT setVal);
Arguments
docId
The ID of the document, dialog box, book, or session containing the object whose
property you want to set. If the object is a session, specify 0.
objId
The ID of the object whose property you want to set.
propNum
The property to set (for example, FP_MarkerText).
setVal
The string to set the property to.
Returns
VoidT.
FDK Programmer’s Reference 443
3
FDK Function Reference
F_ApiSetString()
If F_ApiSetString() fails, the API assigns one of the following values to
FA_errno.
444
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_BadRange
Specified text range is invalid
FE_DupName
Property can’t be set to this name because it is already used
by another object
FE_GenRuleAmbiguous
General rule in structured document was ambiguous
FE_GenRuleConnector
Expected
General rule in structured document missing connector
FE_GenRuleItemExpected
General rule in structured document missing
rule item
FE_GenRuleLeftBracket
Expected
General rule in structured document missing left bracket
FE_GenRuleMixed
Connectors
General rule in structured document has mixed connectors
FE_GenRuleRightBracket
Expected
General rule in structured document missing right bracket
FE_GenRuleSyntaxError
General rule in structured document has
syntax error
FE_NotApiCommand
Object must be the ID of a command defined by an FDK
client
FE_OutOfRange
Specified property value is out of the legal range for the
specified property
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the
operation
FDK Programmer’s Reference
F_ApiSetStrings()
...
FDK Reference
Example
The following code sets the printer to ps11 for the active document:
. . .
F_ObjHandleT docId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
F_ApiSetString(FV_SessionId, docId, FP_PrinterName, "ps11");
. . .
See also
“F_ApiGetString()” on page 243.
F _ A p i S e t S t r i n gs ( )
F_ApiSetStrings() sets a strings (F_StringsT) property. For example, you can
use it to add to the list of words in a document’s dictionary.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetStrings(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum,
F_StringsT *setVal);
Arguments
docId
The ID of the document, dialog box, book, or session containing the object whose
property you want to set. For a session, specify 0.
objId
The ID of the object whose property you want to set.
propNum
The property to set (for example, FP_Dictionary).
setVal
The F_StringsT structure to which to set the property.
The F_StringsT structure is defined as:
typedef struct {
UIntT len; /* The number of strings */
StringT *val; /* The array of strings */
} F_StringsT;
Returns
VoidT.
FDK Programmer’s Reference 445
3
FDK Function Reference
F_ApiSetStrings()
If F_ApiSetStrings() fails, the API assigns one of the following values to
FA_errno.
446
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name is illegal; when setting FP_PDFDocInfo, there
was an entry name that contained non-printable ASCII, an invalid
Hex code, or the entry name was an empty string; see “PDF
Document Info dictionaries” on page 737
FE_BadObjId
Invalid object ID
FE_BadParameter
When setting F_StringsT for FP_PDFDocInfo, there was an
odd number of strings; see “PDF Document Info dictionaries” on
page 737
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_BadShortCut
Specified shortcut is not valid for the current platform
FE_InvalidString
When setting FP_PDFDocInfo, one of the submitted characters
does not translate to valid Unicode, or the string is too long; see
“PDF Document Info dictionaries” on page 737
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
F_ApiSetStrings()
...
FDK Reference
Example
The following code prompts the user to enter a word, then adds the word to the active
document’s dictionary:
. . .
#include "fmemory.h"
StringT sres;
F_ObjHandleT docId;
F_StringsT strings;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
/* Prompt user for a word to add. Return if Cancel clicked. */
if (F_ApiPromptString(&sres, "Enter word to add to dictionary",
"") != 0) return;
/* Get the document dictionary word list. */
strings = F_ApiGetStrings(FV_SessionId, docId, FP_Dictionary);
/* Allocate space for the new word. */
if (strings.len++)
strings.val = (StringT *) F_Realloc(strings.val,
strings.len*sizeof(StringT), NO_DSE);
else
strings.val = (StringT*) F_Alloc(sizeof(StringT), NO_DSE);
/* Add word to the dictionary words. */
strings.val[strings.len-1] = sres;
/* Set property to the amended word list. */
F_ApiSetStrings(FV_SessionId, docId, FP_Dictionary, &strings);
. . .
See also
“F_ApiGetStrings()” on page 244.
FDK Programmer’s Reference 447
3
FDK Function Reference
F_ApiSetTabs()
F_ApiSetTa bs()
F_ApiSetTabs() sets the array of tabs for a paragraph or paragraph format. It
automatically orders the tabs that you pass to it.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetTabs(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum,
F_TabsT* setVal);
Arguments
docId
The ID of the document containing the object whose property you want to set
objId
The ID of the object whose property you want to set
propNum
The property to set (for example, FP_Tabs)
setVal
The F_TabsT structure to which to set the property
You don’t need to insert tabs in order into the setVal array; you can just append
them. The API will sort them for you.
The F_TabsT structure is defined as:
typedef struct {
UIntT len; /* The number of tabs in val */
F_TabT *val; /* Structures that describe the tabs */
} F_TabsT;
The F_TabT structure is defined as:
typedef struct {
MetricT x; /* Offset from paragraph’s left margin */
UCharT type; /* Constant for tab type, e.g. FV_TAB_RIGHT */
StringT leader; /* Characters before tab, e.g. "." */
UCharT decimal; /* Decimal tab character, e.g. ’.’ */
} F_TabT;
448
FDK Programmer’s Reference
F_ApiSetTabs()
...
FDK Reference
F_TabT.type can be one of the following.
Type constant
Tab type
FV_TAB_LEFT
Left tab
FV_TAB_CENTER
Center tab
FV_TAB_RIGHT
Right tab
FV_TAB_DECIMAL
Decimal tab
FV_TAB_RELATIVE_LEFT
Relative center tab (allowed only for format change
lists)
FV_TAB_RELATIVE_CENTER
Relative right tab (allowed only for format change
lists)
FV_TAB_RELATIVE_RIGHT
Relative decimal tab (allowed only for format
change lists)
FV_TAB_RELATIVE_DECIMAL
Relative center tab (allowed only for format change
lists)
..............................................................................
IMPORTANT: If you set an erronious value for a tab type in any F_TabT, this function
will not set any tabs, and it will return FE_Success. You should also be careful not to
set a tab to a location that is off the page.
..............................................................................
Returns
VoidT.
If F_ApiSetTabs() fails, the API assigns one of the following values to FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_OutOfRange
Specified property value is out of the legal range for the specified
property
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference 449
3
FDK Function Reference
F_ApiSetTabs()
Example
The following code adds a 2.0-inch decimal tab in the paragraph containing the
insertion point or the beginning of the current text selection.
. . .
#include "fstrings.h"
#include "fmemory.h"
#define in ((MetricT) 65536*72)
F_ObjHandleT docId;
F_TabsT tabs;
F_TextRangeT tr;
/* Get insertion point or current text selection. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if (tr.beg.objId == 0) return;
/* Get the tabs and allocate space for new tab. */
tabs = F_ApiGetTabs(docId, tr.beg.objId, FP_Tabs);
if (tabs.len++)
tabs.val=(F_TabT*)F_Realloc(tabs.val,
tabs.len*sizeof(F_TabT), NO_DSE);
else
tabs.val = (F_TabT*) F_Alloc(sizeof(F_TabT),NO_DSE);
/* Add the tab to the array. */
tabs.val[tabs.len-1].type = FV_TAB_DECIMAL;
tabs.val[tabs.len-1].x = 2*in;
tabs.val[tabs.len-1].decimal = '.';
tabs.val[tabs.len-1].leader = (StringT)F_StrCopyString(" ");
/* Set the FP_Tabs property to the new set of tabs. */
F_ApiSetTabs(docId, tr.beg.objId, FP_Tabs, &tabs);
F_ApiDeallocateTabs(&tabs);
. . .
See also
“F_ApiGetTabs()” on page 247.
450
FDK Programmer’s Reference
...
FDK Reference
F_ApiSetTextLoc()
F_ApiSetTe xtLoc()
F_ApiSetTextLoc() sets a text location (F_TextLocT) property.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetTextLoc(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum,
F_TextLocT *setval);
Arguments
docId
The ID of the document containing the object whose property you
want to set.
objId
The ID of the object whose property you want to set.
propNum
The property to set.
setVal
The text location to which to set the property. For information on specifying text
locations, see “Getting and setting the insertion point or text selection” in the
FDK Programmer’s Guide.
The F_TextLocT structure is defined as:
typedef struct{
F_ObjHandleT objId; /* Id of object containing text. */
IntT offset; /* From start of object. */
} F_TextLocT;
Returns
VoidT.
If F_ApiSetTextLoc() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name is illegal
FE_BadObjId
Invalid object ID
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in the
specified text object
FDK Programmer’s Reference 451
3
FDK Function Reference
F_ApiSetTextProps()
FA_errno value
Meaning
FE_OutOfRange
Specified property value is out of the legal range for the specified
property
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
See also
“F_ApiGetTextLoc()” on page 266.
F_ApiSetTe xtProps()
F_ApiSetTextProps() sets the text properties (such as the format tag, font family,
and size) for a text range.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetTextProps(F_ObjHandleT docId,
F_TextRangeT *textRangep,
F_PropValsT *setVal);
Arguments
docId
The ID of the document containing the text whose property list you want to
set.
textRangep
The text range to which to apply the property list. For information on
specifying text ranges, see “Getting and setting the insertion point or text
selection” in the FDK Programmer’s Guide.
setVal
The property list to apply to the text range.
Returns
VoidT.
452
FDK Programmer’s Reference
...
FDK Reference
F_ApiSetTextProps()
If F_ApiSetTextProps() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name is illegal
FE_BadRange
Specified text range is invalid
FE_GenRuleAmbiguous
General rule in structured document was ambiguous
FE_GenRuleConnector
Expected
General rule in structured document missing connector
FE_GenRuleItemExpected
General rule in structured document missing
rule item
FE_GenRuleLeftBracket
Expected
General rule in structured document missing left bracket
FE_GenRuleMixed
Connectors
General rule in structured document has mixed connectors
FE_GenRuleRightBracket
Expected
General rule in structured document missing right bracket
FE_GenRuleSyntaxError
General rule in structured document has
syntax error
FE_NotTextObject
Value must be the ID of an object that contains text, such as
a paragraph (FO_Pgf) or a flow (FO_Flow)
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in
the specified paragraph or text line
FE_OutOfRange
Specified property value is out of the legal range for the
specified property
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference 453
3
FDK Function Reference
F_ApiSetTextPropVal()
Example
The following code sets the size of the selected text to 30 points and sets the underlining
to a single underline:
. . .
#define pts (MetricT) 65536 /* A Frame metric point. */
F_TextRangeT tr;
F_PropValsT props;
F_ObjHandleT docId;
/* Get current text selection. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if (tr.beg.objId == 0) return;
/* Allocate memory for the list. */
props = F_ApiAllocatePropVals(2);
/* Set up the properties. */
props.val[0].propIdent.num = FP_FontSize;
props.val[0].propVal.valType = FT_Metric;
props.val[0].propVal.u.ival = 30 * pts;
props.val[1].propIdent.num = FP_Underlining;
props.val[1].propVal.valType = FT_Integer;
props.val[1].propVal.u.ival = FV_CS_SINGLE_UNDERLINE;
/* Apply the property list to the text selection. */
F_ApiSetTextProps(docId, &tr, &props);
/* Deallocate memory referenced by the property list. */
F_ApiDeallocatePropVals(&props);
. . .
See also
“F_ApiGetTextProps()” on page 267.
F_ApiSetTe xtPropVal()
F_ApiSetTextPropVal() sets a text property for a specified text range. The
property can be of any type.
454
FDK Programmer’s Reference
...
FDK Reference
F_ApiSetTextPropVal()
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetTextPropVal(F_ObjHandleT docId,
F_TextRangeT *textRangep,
F_PropValT *setVal);
Arguments
docId
The ID of the document containing the text range.
textRangep
The text range to apply the property to. For information on specifying text
locations, see “Getting and setting the insertion point or text selection” in the
FDK Programmer’s Guide.
setVal
The property to apply to the text range.
Returns
VoidT.
If F_ApiSetTextPropVal() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name is illegal
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_BadRange
Specified text range is invalid
FE_GenRuleAmbiguous
General rule in structured document was ambiguous
FE_GenRuleConnector
Expected
General rule in structured document missing connector
FE_GenRuleItemExpected
General rule in structured document missing
rule item
FE_GenRuleLeftBracket
Expected
General rule in structured document missing left bracket
FE_GenRuleMixed
Connectors
General rule in structured document has mixed connectors
FE_GenRuleRightBracket
Expected
General rule in structured document missing right bracket
FDK Programmer’s Reference 455
3
FDK Function Reference
F_ApiSetTextPropVal()
FA_errno value
Meaning
FE_GenRuleSyntaxError
General rule in structured document has
syntax error
FE_NotTextObject
Value must be the ID of an object that contains text, such as
a paragraph (FO_Pgf) or a flow (FO_Flow)
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in
the specified paragraph or text line
FE_OutOfRange
Specified property value is out of the legal range for the
specified property
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
Example
The following code turns off change bars for the selected text:
. . .
F_TextRangeT tr;
F_PropValT prop;
F_ObjHandleT docId;
/* Get current text selection. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if (tr.beg.objId == 0) return;
/* Set up the property. */
prop.propIdent.num = FP_ChangeBar;
prop.propVal.valType = FT_Integer;
prop.propVal.u.ival = False;
/* Apply the property to the text selection. */
F_ApiSetTextPropVal(docId, &tr, &prop);
. . .
See also
“F_ApiGetTextPropVal()” on page 269, “F_ApiSetTextProps()” on page 452, and
“F_ApiSetTextVal()” on page 459.
456
FDK Programmer’s Reference
...
FDK Reference
F_ApiSetTextRange()
F_ApiSetTe xtRange()
F_ApiSetTextRange() sets a text range (F_TextRangeT) property.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetTextRange(F_ObjHandleT docId,
F_ObjHandleT objId,
IntT propNum,
F_TextRangeT *setVal);
Arguments
docId
The ID of the document containing the object whose property you want to set.
objId
The ID of the object whose property you want to set.
propNum
The property to set.
setVal
The text range to which to set the “Getting and setting the insertion point or text
selection” in the FDK Programmer’s Guide.
Returns
VoidT.
If F_ApiSetTextRange() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name is illegal
FE_BadObjId
Invalid object ID
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_OutOfRange
Specified property value is out of the legal range for the specified
property
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference 457
3
FDK Function Reference
F_ApiSetTextRange()
FA_errno value
Meaning
FE_NotTextObject
Specified text range includes a table row; for example text
locations before and after a structured table row element
FE_BadRange
Specified text range includes an entire table cell; for example
locations before and after a structured table cell element
Example
The following code gets the insertion point or text selection, and then extends the
selection from the insertion point or text selection to the beginning of the next
paragraph:
. . .
F_TextRangeT tr;
F_ObjHandleT docId, nextpgfId;
/* Get ID of active document. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
/* Get the current text selection. */
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
if (tr.beg.objId == 0) return;
/* Get ID of the next paragraph and extend selection to it. */
nextpgfId = F_ApiGetId(docId, tr.end.objId, FP_NextPgfInFlow);
if (nextpgfId){
tr.end.objId = nextpgfId;
tr.end.offset = 0;
F_ApiSetTextRange(FV_SessionId, docId, FP_TextSelection,&tr);
}
. . .
See also
“F_ApiGetTextRange()” on page 271.
458
FDK Programmer’s Reference
...
FDK Reference
F_ApiSetTextVal()
F _ A p i S e tTe x t Val ( )
F_ApiSetTextVal() sets a specified text property for a text range.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetTextVal(F_ObjHandleT docId,
F_TextRangeT *textRangep,
IntT propNum,
F_TypedValT *setVal);
Arguments
docId
The ID of the document containing the text range.
textRangep
The text range to set the property for. For information on specifying text
locations, see “Getting and setting the insertion point or text selection” in the
FDK Programmer’s Guide.
propNum
The number of the property to set.
setVal
The value to set the property to.
Returns
VoidT.
If F_ApiSetTextVal() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadName
Specified name is illegal
FE_BadPropNum
Specified property number is invalid
FE_BadPropType
Incorrect property type for this function
FE_BadRange
Specified text range is invalid
FE_GenRuleAmbiguous
General rule in structured document was ambiguous
FE_GenRuleConnector
Expected
General rule in structured document missing connector
FE_GenRuleItemExpected
General rule in structured document missing
rule item
FDK Programmer’s Reference 459
3
FDK Function Reference
F_ApiSetTextVal()
FA_errno value
Meaning
FE_GenRuleLeftBracket
Expected
General rule in structured document missing left bracket
FE_GenRuleMixed
Connectors
General rule in structured document has mixed connectors
FE_GenRuleRightBracket
Expected
General rule in structured document missing right bracket
FE_GenRuleSyntaxError
General rule in structured document has
syntax error
FE_NotTextObject
Value must be the ID of an object that contains text, such as
a paragraph (FO_Pgf) or a flow (FO_Flow)
FE_OffsetNotFound
Offset specified for the text location couldn’t be found in
the specified paragraph or text line
FE_OutOfRange
Specified property value is out of the legal range for the
specified property
FE_ReadOnly
Property is read-only
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
Example
The following code turns change bars on for the selected text:
. . .
F_TextRangeT tr;
F_TypedValT setVal;
F_ObjHandleT docId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tr = F_ApiGetTextRange(FV_SessionId, docId,FP_TextSelection);
if(!tr.beg.objId) return;
setVal.valType = FT_Integer;
setVal.u.ival = True;
/* Apply the text val to the text selection. */
F_ApiSetTextVal(docId, &tr, FP_ChangeBar, &setVal);
. . .
See also
“F_ApiGetTextPropVal()” on page 269, “F_ApiSetTextProps()” on page 452, and
“F_ApiSetTextVal()” on page 459.
460
FDK Programmer’s Reference
...
FDK Reference
F_ApiSetUBytesByName()
F _ A p i S e tU B y t es B y N a me ()
F_ApiSetUBytesByName() sets an unsigned bytes (F_UBytesT) inset facet. The
standard facets, EPSI and FrameImage, are examples of unsigned bytes facets.
To set an F_UBytesT facet, follow these steps:
1 Call F_ApiSetUBytesByName() to set the facet data.
If you are setting a facet with less than 10K of data, you need to call
F_ApiSetUBytesByName() only once. If you are setting the facet with more than
10K of data, you should call F_ApiSetUBytesByName() multiple times, setting a
chunk of the data each time. You can size the chunks between 0 and 10K. If you use
larger chunks, the set operation goes faster. However, if the chunks are too large, you
may overload your platform’s interapplication communication mechanism.
2 Call F_ApiSetUBytesByName() with propName set to an empty string ("").
This lets the API know you have finished setting the facet.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSetUBytesByName(F_ObjHandleT docId,
F_ObjHandleT objId,
StringT propName,
F_UBytesT *setVal);
Arguments
docId
The ID of the document containing the inset whose facet you
want to set
objId
The ID of the inset whose facet you want to set
propName
The name of the facet to set
setVal
The data to which to set the facet
F_UBytesT is defined as:
typedef struct {
UIntT len; /* The number of unsigned bytes */
UByteT *val; /* The facet data */
} F_UBytesT;
Returns
VoidT.
FDK Programmer’s Reference 461
3
FDK Function Reference
F_ApiShutDown()
If F_ApiSetUBytesByName() fails, the API assigns the following value to
FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
Example
See “Setting an F_UBytesT facet” in the FDK Programmer’s Guide.
See also
“F_ApiGetUBytesByName()” on page 275.
F_ApiShutDown()
F_ApiShutDown() closes an FDK client’s connection with the API. Call it when the
global FDK variable FA_bailout is set to a nonzero value. F_ApiShutDown() is
useful only if you are providing a replacement for F_ApiRun(), for example, if you
are writing a main() function for
your client.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiShutDown(VoidT);
Arguments
None.
Returns
VoidT.
462
FDK Programmer’s Reference
...
FDK Reference
F_ApiSilentPrintDoc()
Example
The following code attempts to start the API. If it succeeds, it executes some code. If it
fails, it exits and prints a message containing the error:
. . .
if (s = F_ApiStartUp(NULL))
F_ApiErr(s);
else {
/* . . . run some code . . . */
}
F_ApiShutDown();
return(s!=NULL);
See also
“F_ApiStraddleCells()” on page 477.
F_ApiSilentPrintDoc()
F_ApiSilentPrintDoc() prints a document or a book using the default print
settings. Default print settings are the settings that appear in the Print dialog box when
the user attempts to print a document. F_ApiSilentPrintDoc() initializes the
print page size and printer name if they don’t have values.
To change a document or book’s default print settings, set the document’s print
properties. For a list of print properties, see “Document print properties” on page 819
and “Book print properties” on page 744.
For example, to change the turn registration marks on when you print a document, use
F_ApiSetInt() to set the document’s FP_RegistrationMarks property. If you
save the document or attempt to print it again within the same session, any changes you
make to a document’s print settings (except FP_PrintStartPage and
FP_PrintEndPage) will appear the next time the user displays the Print dialog box for
the document.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiSilentPrintDoc(F_ObjHandleT docId);
FDK Programmer’s Reference 463
3
FDK Function Reference
F_ApiSilentPrintDoc()
Arguments
docId
The ID of the book or document to print
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiSilentPrintDoc() fails, the API assigns one of the following values to
FA_errno.
464
FA_errno value
Meaning
FE_SystemError
Couldn’t open or close the printer file
FE_BadParameter
Parameter has an invalid value
FDK Programmer’s Reference
...
FDK Reference
F_ApiSilentPrintDoc()
Example
The following function prints a range of pages. You set the range by specifying start and
end values for the document; notice the different print properties used to set the page
range for different numbering styles.
VoidT doSilentPrint(F_ObjHandleT docId, IntT start, IntT end)
{
StringT pageString;
F_ObjHandleT pageId;
IntT i = 0;
/* First specify that you will print a range of pages */
F_ApiSetInt(FV_SessionId, docId, FP_PrintScope, FV_PR_RANGE);
/* If page numbering is numeric, use values of start and end. */
if(F_ApiGetInt(FV_SessionId,docId,FP_PageNumStyle)==
FV_PAGE_NUM_NUMERIC) {
F_ApiSetInt(FV_SessionId, docId, FP_PrintStartPage, start);
F_ApiSetInt(FV_SessionId, docId, FP_PrintEndPage, end);
} else {
/* For non-numeric page nums, convert start and end to */
/* the corresponding page name strings. */
pageId = F_ApiGetId(
FV_SessionId, docId, FP_FirstBodyPageInDoc);
while(pageId) {
i++;
if(i == start) {
pageString=F_ApiGetString(docId,pageId,FP_PageNumString);
F_ApiSetString(FV_SessionId, docId,
FP_PrintStartPageName, pageString);
if(!F_StrIsEmpty(pageString))
F_ApiDeallocateString(&pageString);
} else if(i == end) {
pageString=F_ApiGetString(docId,pageId,FP_PageNumString);
F_ApiSetString(FV_SessionId, docId,
FP_PrintEndPageName, pageString);
if(!F_StrIsEmpty(pageString))
FDK Programmer’s Reference 465
3
FDK Function Reference
F_ApiSimpleGenerate()
F_ApiDeallocateString(&pageString);
}
pageId = F_ApiGetId(docId, pageId, FP_PageNext);
}
}
F_ApiSilentPrintDoc(docId);
}
See also
“F_ApiOpen()” on page 361.
F_ApiSimpleGenerate()
F_ApiSimpleGenerate() generates files for a book. It performs the same operation
as choosing Update Book from the book Edit menu. The book and its generated files
must be set up before you call F_ApiSimpleGenerate().
You may want to call F_ApiUpdateXRefs() to update all cross references before
calling F_ApiSimpleGenerate().
Synopsis
#include "fapi.h"
. . .
IntT F_ApiSimpleGenerate(F_ObjHandleT bookId,
IntT interactive,
IntT makeVisible);
Arguments
bookId
The ID of the book for which to generate files.
interactive
Specifies whether to display warnings, messages, and the book error log to
the user. True displays messages and warnings.
makeVisible
Specifies whether to display the generated files (True displays the files).
Returns
FE_Success if it succeeds, or an error code if an error occurs.
466
FDK Programmer’s Reference
...
FDK Reference
F_ApiSimpleGenerate()
If F_ApiSimpleGenerate() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Bad book ID
FE_BadOperation
The book is not self-consistent (book generates data in one file that is
source data for another generated file, or page count continually
changes for this operation); there is a duplicate file in the book; all
files in the book are generated files
FE_BadParameter
bookId was not a valid book ID
FE_SystemError
Couldn’t allocate memory, or couldn’t open or save one of the files in
the book
FE_WrongProduct
The current product is not supported
Example
The following code generates files for a book:
. . .
F_ObjHandleT bookId;
. . .
F_ApiSimpleGenerate(bookId, False, False);
. . .
See also
“F_ApiUpdateBook()” on page 488 and “F_ApiUpdateXRefs()” on page 500.
Stru cture d
F _ A p i S i m p l e I m p o r t E l e m en t D e f s( )
F_ApiSimpleImportElementDefs() imports element definitions and the format
change list catalog from an EDD or Structured FrameMaker document or book to a
Structured FrameMaker document or book.
If you import element definitions to a book, F_ApiSimpleImportElementDefs()
imports element definitions to each book component for which the
FP_ImportFmtInclude property is set
to True.
FDK Programmer’s Reference 467
3
FDK Function Reference
F_ApiSimpleGenerate()
Synopsis
#include "fapi.h"
. . .
IntT F_ApiSimpleImportElementDefs(F_ObjHandleT docOrBookId,
F_ObjHandleT fromDocOrBookId,
IntT importFlags);
Arguments
docOrBookId
The ID of the book or document to which to import element
definitions.
fromDocOrBookId
The ID of the document or book from which to import element
definitions.
importFlags
Specify how to import formats. See the following table for the flags
that you can OR into this parameter.
The following table lists flags that you can OR into the importFlags parameter:
Flag
Meaning
FF_IED_REMOVE_OVERRIDES
Clear format overrides.
FF_IED_REMOVE_BOOK_INFO
If docOrBookId specifies a document, clear
formatting inherited from a parent book.
FF_IED_DO_NOT_IMPORT_EDD
If the document specified by fromDocOrBookId is
an EDD, don’t treat it as an EDD; just import its
element catalog.
FF_IED_NO_NOTIFY
Do not issue the FA_Note_PreImportElemDefs
or FA_Note_PostImportElemDefs
notifications.
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiSimpleImportElementDefs() fails, the API assigns one of the
following values to FA_errno.
468
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product isn’t supported
FE_BadDocId
Invalid book or document ID
FDK Programmer’s Reference
...
FDK Reference
F_ApiSimpleImportFormats()
Example
The following code imports the Element Catalog from one document to another and
reformats the document using the new catalog:
. . .
F_ObjHandleT fromDocId, toDocId;
. . .
F_ApiSimpleImportElementDefs(toDocId, fromDocId,
FF_IED_REMOVE_OVERRIDES | FF_IED_DO_NOT_IMPORT_EDD);
. . .
F_Api Si mpl eImportFormats()
F_ApiSimpleImportFormats() imports formats from a document to a document
or a book. If you import formats to a book, F_ApiSimpleImportFormats()
imports formats to each book component for which the FP_ImportFmtInclude
property is set to True.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiSimpleImportFormats(F_ObjHandleT bookId,
F_ObjHandleT fromDocId,
IntT formatFlags);
Arguments
bookId
The ID of the book or document to which the formats are to be imported.
fromDocId
The ID of the document from which to import formats.
formatFlags
Bit field specifying which formats to import. Specify 0 for the default flags.
You can OR the following values into the formatFlags parameter to specify which
formats to import.
This value
To
FF_UFF_COLOR
Import colors
FF_UFF_COMBINED_FONTS
Import combined fonts
FF_UFF_COND
Import conditions
FF_UFF_DOCUMENT_PROPS
Import document properties
FDK Programmer’s Reference 469
3
FDK Function Reference
F_ApiSimpleImportFormats()
This value
To
FF_UFF_FONT
Import Character Catalog formats
FF_UFF_MATH
Import equation settings
FF_UFF_PAGE
Import page layouts
FF_UFF_PGF
Import Paragraph Catalog formats
FF_UFF_REFPAGE
Import reference pages
FF_UFF_REMOVE_EXCEPTIONS
Remove exception formats from target documents
FF_UFF_REMOVE_PAGE_BREAKS
Remove all forced page breaks from target documents
FF_UFF_TABLE
Import Table Catalog formats
FF_UFF_VAR
Import variable formats
FF_UFF_XREF
Import cross-reference formats
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiSimpleImportFormats() fails, the API assigns one of the following
values to FA_errno.
470
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support books
FE_BadDocId
Invalid book or document ID
FE_Canceled
User canceled the operation
FE_FailedState
The FrameMaker product failed to open one or more of the book’s
document files during the import operation
FDK Programmer’s Reference
...
FDK Reference
F_ApiSimpleNewDoc()
Example
The following code imports cross-reference and Paragraph Catalog formats from a
document to all the documents in a book:
. . .
F_ObjHandleT docId, bookId;
. . .
F_ApiSimpleImportFormats(bookId, docId,
FF_UFF_XREF | FF_UFF_PGF);
. . .
F_ApiSimpleNewDoc()
F_ApiSimpleNewDoc() creates a new document from a specified template.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiSimpleNewDoc(StringT templateName,
IntT interactive);
Arguments
templateName
The absolute pathname of the template to use. For information on how to
specify a pathname on a platform, see the FDK Platform Guide for that
platform.
interactive
Specifies whether the FrameMaker product displays messages and
warnings to the user.
Returns
The ID of the new document if it is successful, or 0 if it fails.
..............................................................................
IMPORTANT: If you call F_ApiSimpleNewDoc() with interactive set to
True and the user clicks Portrait, Custom, or Landscape in the New dialog box,
F_ApiSimpleNewDoc() does not create a document. It returns 0 and sets
FA_errno to FE_WantsPortrait, FE_WantsCustom, or
FE_WantsLandscape. It is up to your client to create a portrait, custom, or landscape
document. For information on creating custom documents, see “F_ApiCustomDoc()”
on page 115.
..............................................................................
FDK Programmer’s Reference 471
3
FDK Function Reference
F_ApiSimpleOpen()
If F_ApiSimpleNewDoc() fails, the API assigns an error code to FA_errno. The
error codes for F_ApiSimpleNewDoc() are the same as those for F_ApiOpen().
For the list of these error codes, see “F_ApiOpen()” on page 361.
Example
The following code creates a document from a template named Report1 in the
/fmtemplates/Reports directory. It instructs the FrameMaker product to prompt
the user with messages or warnings that occur.
. . .
F_ObjHandleT docId;
docId = F_ApiSimpleNewDoc("/fmtemplates/Reports/Report1", True);
. . .
See also
“F_ApiOpen()” on page 361.
F_ApiSimpleOpen()
F_ApiSimpleOpen() opens a document or book.
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiSimpleOpen(StringT fileName,
IntT interactive);
Arguments
fileName
The absolute pathname of the file to open. For information on specifying a
pathname for a platform, see the FDK Platform Guide for that platform.
interactive
Specifies whether the FrameMaker product displays messages and
warnings to the user. True instructs the FrameMaker product to display
messages and warnings.
If you call F_ApiSimpleOpen() with interactive set to True, the
FrameMaker product displays the Open dialog box. It uses the path specified by the
session property, FP_OpenDir, as the default path. If a warning or error condition
arises, the FrameMaker product notifies the user. For example, if a document uses fonts
that are not available, the FrameMaker product displays a dialog box that allows the
user to cancel the operation or to continue and remap the fonts.
472
FDK Programmer’s Reference
...
FDK Reference
F_ApiSimpleSave()
If you set interactive to False, the FrameMaker product does not display the
Open dialog box or other messages and warnings. If it is necessary to modify a file to
continue opening it, F_ApiSimpleOpen() aborts the operation without notifying the
user, and returns 0.
You can’t use F_ApiSimpleOpen() to open filterable files. To open filterable files,
use F_ApiOpen().
Returns
The ID of the opened document, or 0 if an error occurs.
If F_ApiSimpleOpen() fails, the API assigns an error code to FA_errno. The error
codes for F_ApiSimpleOpen() are the same as those for F_ApiOpen(). For the
list of these error codes, see “F_ApiOpen()” on page 361.
Example
The following code opens a document named /tmp/my.doc. It displays the
document’s ID in a dialog box. It does not prompt the user with other messages or
warnings.
. . .
#include "futils.h"
F_ObjHandleT docId;
UCharT msg[256];
docId = F_ApiSimpleOpen("/tmp/my.doc", False);
if (!docId) F_ApiAlert("Can’t open my.doc.",
FF_ALERT_CONTINUE_NOTE);
else{
F_Sprintf(msg, "The opened document’s ID is 0x%x.", docId);
F_ApiAlert(msg, FF_ALERT_CONTINUE_NOTE);
}
. . .
See also
“F_ApiOpen()” on page 361.
F _ A p i S i mp l e S a v e( )
F_ApiSimpleSave() saves a document or book.
FDK Programmer’s Reference 473
3
FDK Function Reference
F_ApiSimpleSave()
Synopsis
#include "fapi.h"
. . .
F_ObjHandleT F_ApiSimpleSave(F_ObjHandleT docId,
StringT saveAsName,
IntT interactive);
Arguments
docId
The ID of the document or book to save.
saveAsName
The absolute pathname to save the document or book to. For
information on how to specify a pathname for a particular platform,
see the FDK Platform Guide for that platform.
interactive
Specifies whether the FrameMaker product displays messages and
warnings to the user. True displays messages and warnings.
If you set interactive to False and you specify the document or book’s current
name for saveAsName, the FrameMaker product saves the document or book under its
current name. If you specify another filename for saveAsName, the FrameMaker
product saves the document or book to that filename. If you specify an empty string
(""), the FrameMaker product doesn’t save the file. Instead it sets FA_errno to
FE_BadParameter.
If you set interactive to True, the FrameMaker product displays the Save dialog
box and allows the user to choose a filename. The document or book’s current name
appears as the default name.
Returns
The ID of the document it saved, or 0 if it is not successful.
If F_ApiSimpleSave() fails, the API assigns an error code to FA_errno. The error
codes for F_ApiSimpleSave() are the same as those for F_ApiSave(). For the
list of these error codes, see “F_ApiSave()” on page 405.
474
FDK Programmer’s Reference
F_ApiSleep()
...
FDK Reference
Example
The following code opens a document named my.doc from the /tmp directory and
saves it as mynew.doc. It does not use the interactive mode, so the FrameMaker
product doesn’t prompt the user if a file named mynew.doc already exists, or if
anything goes wrong.
. . .
F_ObjHandleT docId;
docId = F_ApiSimpleOpen("/tmp/my.doc", False);
if (docId) F_ApiSimpleSave(docId, "/tmp/mynew.doc", False);
. . .
See also
“F_ApiOpen()” on page 361 and “F_ApiSave()” on page 405.
F _ A p i S l ee p ( )
F_ApiSleep() suspends client and FrameMaker product operation for a specified
number of seconds.
..............................................................................
IMPORTANT: Do not call sleep() in your client. Use F_ApiSleep() instead.
..............................................................................
Synopsis
#include "fapi.h"
. . .
IntT F_ApiSleep(IntT seconds);
Arguments
seconds
The number of seconds to suspend FrameMaker product and client operation
Returns
The number of seconds remaining in the sleep period.
If F_ApiSleep() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_Transport
A transport error occurred
FDK Programmer’s Reference 475
3
FDK Function Reference
F_ApiSleep()
Example
The following code suspends client and FrameMaker product operation for two
seconds:
. . .
F_ApiSleep(2);
. . .
See also
“F_ApiUSleep()” on page 503.
Stru cture d
F_ApiSplitElement()
F_ApiSplitElement() splits the structural element containing the insertion point
into two elements at the insertion point. The insertion point must be inside the element
you want to split.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiSplitElement(F_ObjHandleT docId);
Arguments
docId
The document containing the selected elements
Returns
VoidT.
If F_ApiSplitElement() fails, the API assigns one of the following values to
FA_errno.
476
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadSelectionForOperation
Current text selection is invalid for this operation
FE_WrongProduct
Current FrameMaker product isn’t supported
FDK Programmer’s Reference
...
FDK Reference
F_ApiStraddleCells()
Example
The following code sets the insertion point and splits the element that contains the
insertion point:
. . .
F_TextRangeT tr;
F_ObjHandleT docId;
. . .
F_ApiSetTextRange(FV_SessionId, docId, FP_TextSelection, &tr);
F_ApiSplitElement(docId);
. . .
F_ApiStraddleCells()
F_ApiStraddleCells() straddles the specified cells in a table. The cells you
straddle must all be from the same type of row. You can’t straddle a set of cells that are
in both heading and body rows or footing and body rows. Also, the cells you straddle
must be unstraddled; you cannot use this function to further straddle cells that are
already straddled.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiStraddleCells(F_ObjHandleT docId,
F_ObjHandleT cellId,
IntT heightInRows,
IntT widthInCols);
Arguments
docId
The ID of the document containing the table
cellId
The ID of the first (leftmost and uppermost) cell in the range of cells to
straddle
heightInRows
The number of cells to straddle vertically
widthInCols
The number of cells to straddle horizontally
Returns
FE_Success if it succeeds, or an error code if an error occurs.
FDK Programmer’s Reference 477
3
FDK Function Reference
F_ApiStringLen()
If F_ApiStraddleCells() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product does not support tables
FE_BadOperation
Parameters specify an action that is invalid
FE_BadDocId
Invalid document ID
FE_BadParameter
Parameter has an invalid value
FE_BadObjId
Invalid cell ID
Example
The following code straddles the first two cells in the first row of the first table in the
active document:
. . .
F_ObjHandleT docId, tableId, firstrowId, cellId;
/* Get IDs of document, table, and first cell. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tableId = F_ApiGetId(FV_SessionId, docId, FP_FirstTblInDoc);
firstrowId = F_ApiGetId(docId, tableId, FP_FirstRowInTbl);
cellId = F_ApiGetId(docId, firstrowId, FP_FirstCellInRow);
if (F_ApiGetInt(docId, tableId, FP_TblNumCols) < 2)
F_ApiAlert("Not enough columns!", FF_ALERT_CONTINUE_NOTE);
else F_ApiStraddleCells(docId, cellId, 1, 2);
. . .
See Also
“.F_ApiUnStraddleCells()” on page 485.
F _ A p i S t ri n g L e n ( )
F_ApiStringLen() returns the length of a string.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiStringLen(ConStringT s);
478
FDK Programmer’s Reference
F_ApiStringLen()
...
FDK Reference
Arguments
s
The string for which to return the length
Returns
The length of the specified string.
Example
The following code prints the length of the string
supercalifragilisticexpialidocious:
. . .
F_Printf(NULL, "The string length is %d\n",
F_ApiStringLen("supercalifragilisticexpialidocious"));
. . .
FDK Programmer’s Reference 479
3
3
DK Function Reference
DK Function Reference
Stru cture d
F_ApiTextLocToElementLoc()
F_ApiTextLocToElementLoc() returns the element location structure that
corresponds to the current text location.
Synopsis
#include "fapi.h"
. . .
F_ElementLocT F_ApiTextLocToElementLoc (F_ObjHandleT docId,
const F_TextLocT *tlocp);
Arguments
docId
The ID of the document containing the element
tlocp
The text location structure to convert
Returns
An F_ElementLocT structure specifying an element location. The
F_ElementLocT structure is defined as:
typedef struct {
F_ObjHandleT parentId; /* Parent element ID. */
F_ObjHandleT childId; /* Child element ID. */
IntT offset; /* Offset within child/parent element. */
} F_ElementLocT;
If F_ApiTextLocToElementLoc() fails, the API assigns one of the following
values to FA_errno.
480
FA_errno value
Meaning
FE_BadDocId
Invalid document ID
FE_BadParameter
tlocp was empty or a parameter was improperly specified
FE_WrongProduct
Current FrameMaker product doesn’t support the operation
FDK Programmer’s Reference
...
DK Function Reference
Example
The following code converts a text location to an element location in order to determine
which elements can legally be inserted at the location:
. . .
F_ObjHandleT docId, elemId;
F_TextRangeT tRange;
F_TextLocT tloc;
F_ElementLocT elemLoc;
StringT elemName;
. . .
tRange = F_ApiGetTextRange(FV_SessionId, docId,
FP_TextSelection);
tloc = tRange.beg
elemLoc = F_ApiTextLocToElementLoc(docId, &tloc);
/* get Id of the parent element’s element definition */
elemId = F_ApiGetId(docId, elemLoc.parentId, FP_ElementDef);
elemName = F_ApiGetString(docId, elemId, FP_Name);
/* process to determine which elements can be inserted */
. . .
See also
“F_ApiTextLocToElementLoc()” on page 480.
See also
“F_ApiElementLocToTextLoc()” on page 156.
String.
FDK Programmer’s Reference 481
3
DK Function Reference
F_ApiUndoCancel()
F _ A p i U n d oC a n c el ( )
F_ApiUndoCancel() clears both the undo and redo stacks in the document specified
by docId. If an undo checkpoint has been started and not ended in this document, this
call cancels the grouping operation.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiUndoCancel(F_ObjHandleT docId);
Arguments
docId
The ID of the document containing the undo and the redo stacks
Returns
On success, sets FA_errno to FE_Success. Otherwise, sets FA_errno to
FE_BadDocId (invalid document ID).
Example
This example demonstrates how to clear the undo stack when undoing an action could
corrupt an external file. In this case, a string is deleted from an external database
permanently when selected text is deleted in FrameMaker. If you cannot restore the
deleted string in the database, undoing the delete action from a FrameMaker document
would result in database corruption. To protect against this, the example uses
F_ApiUndoCancel to clear all user actions saved in the undo stack.
F_TextRangeT tr;
F_TextItemsT textItems;
StringT string = NULL;
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
textItems = F_ApiGetTextForRange(docId, &tr, FTI_String);
string = CreateStringFromTextItems(textItems);
F_ApiDeleteText(docId, &tr);
DeleteTextFromDatabasePermanently(string);
F_ApiUndoCancel(docId);
482
FDK Programmer’s Reference
...
DK Function Reference
F_ApiUndoEndCheckPoint()
F_ApiUndoEndCheckPoint()
F_ApiUndoEndCheckPoint() marks the ending point of a series of API calls that
are to be treated as a single undoable operation. The docid must specify the same
document as the corresponding call to F_ApiUndoStartCheckpoint.
If any API call in the series clears the undo stack, the stack is cleared after the end
checkpoint is reached.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiUndoEndCheckPoint(F_ObjHandleT docId);
Arguments
docId
The ID of the document in which the ending point i to be marked.
Returns
On success, sets FA_errno to FE_Success. Otherwise, sets FA_errno to one of the
following:

FE_BadDocId (invalid document ID).

FE_FDKUndoNotAllowed: whenever fdk undo recording flag is off and checkpoint
for undo is requested
Example
This example combines two API calls (F_ApiSetTextProps and F_ApiAddText)
into one undoable action. The specified command name, “Add Big Red Text”appears in
FDK Programmer’s Reference 483
3
DK Function Reference
F_ApiUndoStartCheckPoint()
the Undo menu and the Command History palette, rather than the two command names
“Set Text Property” and “Add Text”.
#define pts (MetricT)65536
F_TextRangeT tr;
F_ObjHandleT colorId;
F_PropValsT props;
IntT i;
tr = F_ApiGetTextRange(FV_SessionId, docId, FP_TextSelection);
colorId = F_ApiGetNamedObject(docId, FO_Color, (StringT)"Red");
props = F_ApiGetTextProps(docId, &tr.beg);
i = F_ApiGetPropIndex(&props, FP_Color);
props.val[i].propVal.u.ival = colorId;
i = F_ApiGetPropIndex(&props, FP_FontSize);
props.val[i].propVal.u.ival = 100 * pts;
F_ApiUndoStartCheckpoint(docId, "Add Big Red Text");
F_ApiSetTextProps(docId, &tr, &props);
F_ApiDeallocatePropVals(&props);
F_ApiAddText(docId, &tr.beg, (StringT)"Big Red Text!");
F_ApiUndoEndCheckpoint(docId);
F_ApiUndoS tartCheckPoint()
F_ApiUndoStartCheckPoint() records the starting point of a series of API calls
that are to be treated as a single undoable operation in the document specified by docId.
If there is no corresponding call to F_APIUndoEndCheckpoint, all subsequent API
calls are grouped into a single undoable operation.
You cannot nest checkpoints. A second call to this function that appears before the
corresponding call to F_APIUndoEndCheckpoint is ignored.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiUndoStartCheckPoint(F_ObjHandleT docId, ConStringT
description);
484
FDK Programmer’s Reference
...
DK Function Reference
F_ApiUndoStartCheckPoint()
Arguments
docId
The ID of the document in which the ending point i to be marked
Description
The string that appears in the Undo and Redo menus and the Command
History palette
Returns
On success, sets FA_errno to FE_Success. Otherwise, sets FA_errno to one of the
following:

FE_BadDocId (invalid document ID).

FE_FDKUndoNotAllowed: whenever fdk undo recording flag is off and checkpoint
for undo is requested
Example
See the example provided in “F_ApiUndoEndCheckPoint()” on page 483
.F_ApiUnStraddleCells()
F_ApiUnStraddleCells() unstraddles the specified cells in a table.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiUnStraddleCells(F_ObjHandleT docId,
F_ObjHandleT cellId,
IntT heightInRows,
IntT widthInCols);
Arguments
docId
The ID of the document containing the table
cellId
The ID of the first (leftmost and uppermost) cell in the range of cells to
unstraddle
heightInRows
The number of cells to unstraddle vertically
widthInCols
The number of cells to unstraddle horizontally
Returns
FE_Success if it succeeds, or an error code if an error occurs.
FDK Programmer’s Reference 485
3
DK Function Reference
F_ApiUndoStartCheckPoint()
If F_ApiUnStraddleCells() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product does not support tables
FE_BadOperation
Parameters specify an action that is invalid
FE_BadDocId
Invalid document ID
FE_BadParameter
Parameter has an invalid value
FE_BadObjId
Invalid cell ID
Example
The following code unstraddles the first two cells in the first row of the first table in the
active document:
. . .
F_ObjHandleT docId, tableId, firstrowId, cellId;
/* Get IDs of document, table, and first cell. */
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
tableId = F_ApiGetId(FV_SessionId, docId, FP_FirstTblInDoc);
firstrowId = F_ApiGetId(docId, tableId, FP_FirstRowInTbl);
cellId = F_ApiGetId(docId, firstrowId, FP_FirstCellInRow);
F_ApiUnStraddleCells(docId, cellId, 1, 2);
. . .
See also
“F_ApiStraddleCells()” on page 477.
Stru cture d
F _ A p i U n Wr a p E l em e n t( )
F_ApiUnWrapElement() removes the selected structural elements, but leaves their
contents and child elements intact in the document. F_ApiUnWrapElement() does
not remove all the elements in the selection, just the top-level elements.
486
FDK Programmer’s Reference
...
DK Function Reference
F_ApiUndoStartCheckPoint()
..............................................................................
IMPORTANT: At least one structural element must be selected when
F_ApiUnWrapElement() is called. F_ApiUnWrapElement() has no effect on
object elements.
..............................................................................
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiUnWrapElement(F_ObjHandleT docId);
Arguments
docId
The ID of the document containing the selected elements
Returns
VoidT.
If F_ApiUnWrapElement() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support the
operation
FE_BadDocId
Invalid document ID
FE_BadSelectionForOperation
Current text selection is invalid for this operation
Example
The following code sets the text selection and unwraps the elements in it:
. . .
F_TextRangeT tr;
F_ObjHandleT docId;
. . .
F_ApiSetTextRange(FV_SessionId, docId, FP_TextSelection, &tr);
F_ApiUnWrapElement(docId);
. . .
See also
“F_ApiWrapElement()” on page 505.
FDK Programmer’s Reference 487
3
DK Function Reference
F_ApiUpdateBook()
F_ApiUpdateBook()
F_ApiUpdateBook() performs Update Book commands.
F_ApiUpdateBook() allows you to specify a script (property list) telling the
FrameMaker product how to update the book and how to deal with error and warning
conditions. For example, you can specify whether to abort or to continue updating a
book if it contains view-only documents.
Synopsis
#include "fapi.h"
. . .
ErrorT F_ApiUpdateBook(F_ObjHandleT bookId,
F_PropValsT *updateParamsp,
F_PropValsT **updateReturnParamspp);
Arguments
bookId
The ID of the book to update
updateParamsp
A property list telling the FrameMaker product how to update
the book and how to respond to errors and other conditions. To
use the default list, specify NULL.
updateReturnParamspp
A property list that provides information about how the
FrameMaker product updated the book. It must be initialized
before you call F_ApiUpdateBook().
..............................................................................
IMPORTANT: Always initialize the pointer to the property list that you specify for
updateReturnParamspp to NULL before you call F_ApiUpdateBook().
..............................................................................
To get a property list to specify for the updateParamsp parameter, use
F_ApiGetUpdateBookDefaultParams() or create the list from scratch. For a
list of all the properties an Update Book script can include, see
“F_ApiGetUpdateBookDefaultParams()” on page 280. For an example of how to create
a property list from scratch, see “Example” in the FDK Programmer’s Guide.
While updating a book, you can post messages to the book error log. To do so, you use
F_ApiCallClient() to pass your messages to the BookErrorLog client.
Returns
An ErrorT, which has the same value as FA_errno.
488
FDK Programmer’s Reference
F_ApiUpdateBook()
...
DK Function Reference
The property list that updateReturnParamspp is set to has the properties shown in
the following table.
Property
Meaning and possible values
FS_UpdateBookStatus
A bit field to indicate what happened during the update. See
the table below for a list of possible flags.
If an error occurs, the FA_errno global variable indicates the result of a call to
F_ApiUpdateBook(). The following table lists the possible status flags and the
FA_errno value associated with them.
FA_errno values
Possible FS_UpdateBookStatus flags
FE_BadDocId
None
FE_BadOperation
FV_BookNotSelfConsistent: The book is not self-consistent
(book generates data in one file that is source data for another
generated file, or page count continually changes for this
operation)
FV_DuplicateFileInBook: one or more files in the book is a
duplicate of another file
FV_NoNonGeneratedFilesInBook: the only files in the book
are generated files
FE_BadParameter
FV_BadUpdateBookFileId: specified book ID is invalid
FV_BadUpdateBookScriptValue: the update book script
contained an invalid property value
FE_Canceled
FE_CanceledByClient
FV_CancelInconsistentNumPropsInFileInBook: one or
more of the book’s document files has numbering properties that
are inconsistent with the properties stored in the book
FV_CancelNonFMFileInBook: one or more of the book’s
document files is not a FrameMaker product file
FV_CancelViewOnlyFileInBook: one or more of the book’s
document files is view-only
FV_UserCanceledUpdateBook: the user cancelled the update
operation
FDK Programmer’s Reference 489
3
DK Function Reference
F_ApiUpdateBook()
FA_errno values
Possible FS_UpdateBookStatus flags
FE_SystemError
FV_FileInBookNotOpened: one or more files in the book could
not be opened
FV_FileInBookNotSaved: one or more files in the book could
not be saved
FV_TooManyWindowsUpdateBook: too many windows were
open for the currently available memory
To determine if a particular FS_UpdateBookStatus bit is set, use
F_ApiCheckStatus(). For more information, see “F_ApiCheckStatus()” on
page 92.
After you are done with the property lists you use to call F_ApiUpdateBook(), use
F_ApiDeallocatePropVals() to deallocate the memory they use.
Example
The following code updates the active book. It creates a property list that instructs the
FrameMaker product to update file numbering and cross-references in the book.
490
FDK Programmer’s Reference
...
DK Function Reference
F_ApiUpdateDITAReference()
. . .
#include "futils.h"
F_PropvalsT params, *returnp = NULL;
F_ObjHandldleT bookId;
ErrorT err;
#define ALERT_USR
#define NUM_PROP_VALS
0
1
/* Allocate memory for the Update Book script. */
params = F_ApiAllocatePropVals(NUM_PROP_VALS);
if(params.len == 0)
return;
/* Alert user for various conditions */
params.val.[ALERT_USR].propIdent.num = FS_AlertUserAboutFailure;
params.val.[ALERT_USR].propIdent.valType = FT_Integer;
params.val.[ALERT_USR].propIdent.u.ival = True;
/* Get book ID and update the book. */
bookId = F_ApiGetId(0, FV_SessionId, FP_ActiveBook);
if(!bookId)
return;
err = F_ApiUpdateBook(bookId, &params, &returnp);
/* Free memory for the property values. */
F_ApiDeallocatePropVals(&params);
F_ApiDeallocatePropVals(returnp);
. . .
See also
“F_ApiGetUpdateBookDefaultParams()” on page 280 and “F_ApiCheckStatus()” on
page 92.
F_ A p i U p d at eD ITA R eference()
Updates a DITA object.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiUpdateDITAReference(F_ObjHandleT docId, F_ObjHandleT
elemId, IntT objType);
FDK Programmer’s Reference 491
3
DK Function Reference
F_ApiUpdateDITAReference()
Arguments
docId
The ID of the document containing the object.
elemId
The Id of the element representing the DITA object to be
updated.
objType
Can have one of the following values:
FV_DITAObjTypeAuto: Automatically determines the
DITA object type of the element and updates accordingly.
FV_DITAObjTypeConref: The element to be updated is a
DITA conref. If not, does not update and returns an error.
FV_DITAObjTypeLink: The element to be updated is a
DITA link. If not, does not update and returns an error.
FV_DITAObjTypeTopicref: The element to be updated is
a DITA topicref. If not, does not update and returns an error.
FV_DITAObjTypeTopicsetref: The element to be
updated is a DITA topicsetref. If not, does not update and
returns an error.
Returns
If F_ApiUpdateDITAReference() fails, the API assigns one of the following
values to FA_errno.
492
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support the operation.
FE_BadDocId
The Document ID provided is invalid.
FE_BadElementId
The Element ID provided is invalid.
FE_NonDITADocument
The Document provided is not a DITA document.
FE_BadParameter
The objType provided is invalid or the objType is not
valid for the type of DITA document provided.
FE_UpdateDITAReferenc
eFailedInvalidElement
Type
Update operation failed because either the element specified
is not a reference type of element OR it does not match the
specified object type.
FE_UpdateDITAReferenc
eFailedCannotResolveR
eference
Update operation failed because the reference cannot be
resolved.
FE_UpdateDITAReferenc
eFailedCannotFindRefe
rencedFile
Update operation failed because the referenced file cannot
be found at the specified location.
FDK Programmer’s Reference
...
DK Function Reference
F_ApiUpdateDITAReferences()
FA_errno value
Meaning
FE_UpdateDITAReferenc
eFailedCannotOpenRefe
rencedFile
Update operation failed because the referenced file cannot
be opened from the specified location.
FE_UpdateDITAReferenc
eFailedCannotConvertT
oFMObject
Update operation failed because the corresponding FM
object cannot be created.
FE_UpdateDITAReferenc
eFailed
Update operation failed.
F _ A p i U p d at e D I TA R e f e re n c e s( )
Updates all DITA references of the specified type.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiUpdateDITAReferences(F_ObjHandleT docId, IntT flag);
FDK Programmer’s Reference 493
3
DK Function Reference
F_ApiUpdateDITAReferences()
Arguments
docId
The ID of the document containing the inset.
flag
The available flags and their values are as follows:
FF_DITAUpdateAllConrefs: 0x01
FF_DITAUpdateAllXrefs: 0x02
FF_DITAUpdateAllLinks: 0x04
FF_DITAUpdateAllTopicrefs: 0x08
FF_DITAUpdateAllTopicsetrefs: 0x10
FF_DITAUpdateAllReferences:
FF_DITAUpdateAllConrefs |
FF_DITAUpdateAllXrefs |
FF_DITAUpdateAllLinks |
FF_DITAUpdateAllTopicrefs |
FF_DITAUpdateAllTopicsetrefs
In case of multiple refrence types being updated, the objects will be updated in the
following sequence:
API Sequence
Client Sequence
Topicrefs
Topicrefs
Xrefs
Topicsetrefs
Links
Conrefs
Topicsetrefs
Xrefs
Conrefs
Links
Corresponding to this API, the notification FA_Note_UpdateDITAReferences is
used separately once for each reference type that is to be updated. These notifications
can also be handled in the user client.
494
FDK Programmer’s Reference
...
DK Function Reference
F_ApiUpdateKeyDefinition()
Returns
If F_ApiUpdateDITAReferences() fails, the API assigns one of the following
values to FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support the operation.
FE_BadDocId
The Document ID provided is invalid.
FE_NonDITADocument
The Document provided is not a DITA document.
F_ A p i U p d at eKeyD efin ition()
Updates the specified key definition field for the specified key in the specified key
catalog.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiUpdateKeyDefinition(F_ObjHandleT keyCatalogId, StringT
key, IntT keyField, const F_TypedValT *valuep)
Arguments
keyCatalogId
The ID of the Key Catalog for which to update the key
definiton
key
The tag of the key for which the key definition is being
updated.
keyField
The key field (or key information) that is being updated.
valuep
The value to update the keyField to.
The valid keyField values and the corresponding value type are as follows:
keyField
Value type
FV_KeydefKeyTarget
FT_String
FV_KeydefKeySrcFile
FT_String
FV_KeydefKeySrcType
FT_Integer
FV_KeydefKeyVarList
FT_Vals
FDK Programmer’s Reference 495
3
DK Function Reference
F_ApiUpdateKeyDefinition()
keyField
Value type
FV_KeydefKeyDefaultText
FT_String
FV_KeydefKeyFoundInRefFile
FT_Integer
FV_KeydefKeyInValid
FT_Integer
FV_KeydefKeyAttrs
FT_AttributesEx
Returns
If F_ApiUpdateTextInset() fails, the API assigns one of the following values to
FA_errno.
F_ApiUpdateTextInset()
FA_errno value
Meaning
FE_BadObjId
The ID provided does not specify a Key Catalog.
FE_BadKey
The Key provided is not valid.
FE_KeyDefinitionDoesN
otExist
The definition for the specified key is not available in the
Key Catalog.
FE_BadValue
The value is either not specified or it is not as expected for
the specified 'keyField'.
FE_ReadOnly
(only for keyField=FV_KeydefKeyTag or
FV_KeydefKeyDuplicate). The key field cannot be
changed/updated.
FE_InvAttribute
(only for keyField=FV_KeydefKeyAttrs) The
Attribute information provided is not valid.
FE_WrongProduct
(only for keyField=FV_KeydefKeyAttrs) Current
FrameMaker product doesn’t support the operation.
FE_BadKeyField
The key field provided is not valid.
F_ApiUpdateTextInset() updates the contents of a stale text inset. It determines
whether an inset is stale by comparing the inset’s FP_TiLastUpdate property with
the modification date of the inset’s source file.
F_ApiUpdateTextInset() does not update a text inset unless it is stale. To make a
text inset stale, set its FP_TiLastUpdate property to 0.
F_ApiUpdateTextInset() does not update graphic insets (FO_Inset objects).
496
FDK Programmer’s Reference
F_ApiUpdateVariables()
...
DK Function Reference
Synopsis
#include "fapi.h"
. . .
IntT F_ApiUpdateTextInset(F_ObjHandleT docId,
F_ObjHandleT textInsetId);
Arguments
docId
The ID of the document containing the inset.
textInsetId
The ID of the text inset to update. To update all stale insets in
the document that are marked for automatic update, specify 0.
Returns
FE_Success if it succeeds or FE_SomeUnresolved if some text insets were
unresolved.
If F_ApiUpdateTextInset() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Bad document or book ID
FE_BadFileType
The inset specifies a file that does not match the import type
(for example, the inset imports a binary document but the
file is a text file or doesn’t exist)
FE_SomeUnresolved
Some text insets were unresolved
FE_WrongProduct
Product doesn’t support the specified operation
FE_SystemError
Couldn’t allocate memory
F _ A p i U p d at e Va ri a b l es ( )
F_ApiUpdateVariables() updates all the variables in a document. It performs the
same operation as clicking Update in the Variable dialog box.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiUpdateVariables(F_ObjHandleT docId);
FDK Programmer’s Reference 497
3
DK Function Reference
F_ApiUpdateXRef()
Arguments
docId
The ID of the document in which to update variables
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiUpdateVariables() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Bad document or book ID
FE_WrongProduct
Product doesn’t support the specified operation
FE_SystemError
Couldn’t allocate memory
Example
The following code updates the variables in the active document:
. . .
F_ApiUpdateVariables(F_ApiGetId(0, FV_SessionId, FP_ActiveDoc));
. . .
F_ApiUpd ateXRef()
Updates a specified cross-reference in the document.
Synopsis
#include "fapi.h"
...
IntT F_ApiUpdateXRef(F_ObjHandleT docId,
F_ObjHandleT srcDocId,
F_ObjHandleT xrefId);
498
FDK Programmer’s Reference
F_ApiUpdateXRef()
...
DK Function Reference
Arguments
docId
The ID of the document that contains the crossreference.
srcDocId
The ID of the source document that the cross-reference
references.
xrefId
The ID of the cross-reference to be updated.
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiUpdateXRef() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_BadDocId
Invalid document ID.
FE_BadXRefSrcDo
c
Invalid source document ID.
FE_BadObjId
Invalid cross-reference ID.
FE_XRefUnresolv
ed
FrameMaker cannot update the cross-reference, as it cannot find the
source.
FDK Programmer’s Reference 499
3
DK Function Reference
F_ApiUpdateXRefs()
Example
The following code updates the cross-reference to the same or another document.
. . .
F_ObjHandleT xrefId = F_ApiGetId(FV_SessionId, docId,
FP_FirstXRefInDoc);
F_ObjHandleT srcDocId;
StringT srcFile;
/* Open the source document */
srcFile = F_ApiGetString(docId, xrefId, FP_XRefFile);
if(F_StrIsEmpty(srcFile))
srcDocId = docId;
else
{
F_PropValsT params, *returnp = NULL;
/* Set the open & return parameters */
. . .
srcDocId = F_ApiOpen(srcFile, &params, &returnp);
}
F_ApiUpdateXRef(docId, srcDocId, xrefId);
. . .
F_ApiUpd ateXRefs()
F_ApiUpdateXRefs() updates the cross-references in a document. It performs the
same operation as clicking Update in the Cross-Reference window.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiUpdateXRefs(F_ObjHandleT docId,
IntT updateXRefFlags);
500
FDK Programmer’s Reference
F_ApiUpdateXRefs()
...
DK Function Reference
Arguments
docId
The ID of the document in which to update cross-references.
updateXRefFlags
Flags to indicate which cross-references to update. See the following
table for values.
You can OR the values listed in the following tables into the updateXRefFlags
argument.
This value
For
FF_XRUI_FORCE_UPDATE
Updates all cross-references, regardless of whether the
source document has changed
FF_XRUI_INTERNAL
Only internal cross-references
FF_XRUI_OPEN_DOCS
Only cross-references whose sources are in open
documents
FF_XRUI_CLOSED_DOCS
Only cross-references whose sources are in closed
documents
FF_XRUI_EVERYTHING
All cross-references
Returns
FE_Success if it succeeds, or an error code if an error occurs.
If F_ApiUpdateXRefs() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product doesn’t support the requested
operation
FE_BadDocId
Invalid document ID
FE_SomeUnresolved
After the update there were unresolved references
FDK Programmer’s Reference 501
3
DK Function Reference
F_ApiConvertXrefToText()
Example
The following code updates all the cross-references in the active document:
. . .
F_ApiUpdateXRefs(F_ApiGetId(0, FV_SessionId, FP_ActiveDoc),
FF_XRUI_EVERYTHING);
. . .
F_ApiConvertXrefTo Te xt()
F_ApiConvertXrefToText() converts a cross-reference in a document to text . It
performs the same operation as clicking Convet to Text in the Cross-Reference pod.
Synopsis
#include "fapi.h"
. . .
StatusT F_ApiConvertXrefToText (F_ObjHandleT docId,
IntT xrefId);
Arguments
docId
The ID of the document in which to update cross-references.
xrefId
The ID of the cross reference to convert to text.
Note: If you set the ID to 0, all the cross references in the document
are converted to text.
Returns
FE_Success if it succeeds, or an error code if an error occurs.
FA_errno value
Meaning
FE_BadDocId
Invalid docId
FE_BadObjId
Invalid xrefId
F _ A p i U s e rC a n c el ( )
F_ApiUserCancel() determines whether the user has chosen the Cancel command
since the current callback function was called.
502
FDK Programmer’s Reference
F_ApiUSleep()
...
DK Function Reference
F_ApiUserCancel() is useful for clients that conduct extensive processing that the
user may want to cancel. For example, if your client processes all the documents in a
book, it can call F_ApiUserCancel() after it processes each document. If
F_ApiUserCancel() returns True, your client can abort the processing.
Synopsis
#include "fapi.h"
. . .
IntT F_ApiUserCancel(VoidT);
Arguments
None.
Returns
True if the user has executed the Cancel gesture, or False if the user has not
executed the Cancel gesture.
F_ApiUSleep()
F_ApiUSleep() . It suspends client and FrameMaker product operation for a
specified number of microseconds.
..............................................................................
IMPORTANT: Do not call usleep() in your client. Use F_ApiUSleep() instead.
..............................................................................
Synopsis
#include "fapi.h"
. . .
Intt F_ApiUSleep(IntT microseconds);
Arguments
microseconds
The number of microseconds to suspend FrameMaker product and client
operation
Returns
The number of microseconds remaining before client and FrameMaker product
operation resume.
FDK Programmer’s Reference 503
3
DK Function Reference
F_ApiWinConnectSession()
If F_ApiUSleep() fails, the API assigns the following value to FA_errno.
FA_errno value
Meaning
FE_SystemTransport
A transport error occurred
Example
The following code suspends client and FrameMaker product information for one tenth
of a second:
. . .
F_ApiUSleep(100000);
. . .
See also
“F_ApiSleep()” on page 475.
F _ A p i Wi n C o n n e c t S es s i on ()
F_ApiWinConnectSession() Allows you to register asynchronous clients just as you
would register other clients; you can store the registration data in the client’s version
info file or you can pass a F_PropValsT structure to F_ApiWinConnectSession that is a
list of registration data.
For more information on working with asyncronous clients see the FDK’s Windows
platform guide.
F_ApiWinConnectSession() is defined as:
F_ApiWinConnectSession(const F_PropValsT *connectProps, ConStringT hostname,
cons struct _GUID *service):
504
This property
corresponds to this statement in a client’s VERSIONINFO
resource
FI_PLUGIN_NAME
the name of the client.
FI_PLUGIN_TYPE
the type of client.
FI_PLUGIN_PRODUCTS
the names of FrameMaker products this client supports.
FI_PLUGIN_FACET
the name of the file format supported by the client
(filters, only)
FDK Programmer’s Reference
...
DK Function Reference
F_ApiWinInstallDefaultMessageFilter()
This property
corresponds to this statement in a client’s VERSIONINFO
resource
FI_PLUGIN_FORMATID
a four-character string that identifies a file format
(filters, only).
FI_PLUGIN_VENDOR
a four-character string that identifies the client’s
provider.
FI_PLUGIN_SUFFIX
the filename extension of the file type that the client
filters (filters, only).
FI_PLUGIN_INFORMAT
the file format for the file to filter (filters, only)
FI_PLUGIN_OUTFORMAT
the file format for the resulting file (filters, only)
FI_PLUGIN_DESCRIPTION
a description of the client that appears when you choose
About.
FI_PLUGIN_PRODUCTNAME
the name by which customers know your client.
If connectProps is NULL, the FrameMaker process uses the client’s VersionInfo
resource or the entries in the .ini file. If the client has no registration information in
any of these sources, the FrameMaker process registers it as a standard client.
F _ A p i Wi n I n s ta l l D ef a u l tM e ss a g e F i l t er ( )
Registers the default FDK message filter for a COM session. If you have an application
which initializes COM but does not install a message filter you should use
F_ApiWinInstallDefaultMessageFilter() to have FrameMaker install it’s default
message filter.
Stru cture d
F_ApiWrapElement()
F_ApiWrapElement() inserts a structural element around the selected text and
structural elements in a document.
If the flow that contains the selection is unstructured and the selection does not include
the entire flow contents, F_ApiWrapElement() wraps the flow contents into a
NoName element before wrapping the selection into the specified element definition.
Synopsis
#include "fapi.h"
. . .
VoidT F_ApiWrapElement(F_ObjHandleT docId,
F_ObjHandleT edefId);
FDK Programmer’s Reference 505
3
DK Function Reference
F_Assert()
Arguments
docId
The ID of the document containing the selected text and elements
edefId
The ID of the element definition for the new element
Returns
VoidT.
If F_ApiWrapElement() fails, the API assigns one of the following values to
FA_errno.
FA_errno value
Meaning
FE_WrongProduct
Current FrameMaker product isn’t Structured
FrameMaker
FE_BadDocId
Invalid document ID
FE_BadElementDefId
Specified element definition ID is invalid
FE_BadSelectionForOperation
Current text selection is invalid for this operation
Example
The following code sets the text selection and wraps the elements in it:
. . .
F_TextRangeT tr;
F_ObjHandleT docId, edefId;
. . .
F_ApiSetTextRange(FV_SessionId, docId, FP_TextSelection, &tr);
F_ApiWrapElement(docId, edefId);
. . .
See also
“F_ApiNewElement()” on page 323, and “F_ApiUnWrapElement()” on page 486.
F_Assert()
F_Assert() is a macro that tests whether an expression is true and calls the assertion
handler if it is not.
When a client calls F_Assert() and assertion failure occurs, the FDK executes an
assertion handler. You can use F_SetAssert() to specify your own assertion handler.
However, after your assertion-handler function returns, the FDE’s default assertion
506
FDK Programmer’s Reference
F_Calloc()
...
DK Function Reference
handler is called to clean up the system and exit the client properly. For more
information, see “F_SetAssert()” on page 631 of the FDK Programmer’s Reference.
Synopsis
#include "fdetypes.h"
#include "fassert.h"
. . .
VoidT F_Assert(BoolT p);
Arguments
p
The expression to test
Returns
VoidT.
Example
The following code defines and sets an assertion handler and then calls it by testing a
false statement:
. . .
VoidT myHandler();
. . .
UCharT *nullstr = NULL;
F_SetAssert(myHandler);
/* Set assertion handler. */
F_Assert(nullstr != NULL); /* Calls assertion handler. */
VoidT myHandler()
{
F_Printf(NULL, "Assertion failed.\n");
}
. . .
F_Calloc()
F_Calloc() allocates a memory block of n items of size bytes. It initializes the
memory block to zeros.
FDK Programmer’s Reference 507
3
DK Function Reference
F_ChannelAppend()
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
PtrT F_Calloc(UIntT n,
UIntT size,
PUCharT flags);
Arguments
n
The number of items for which to allocate memory
size
The size of the items
flags
Specifies whether to bail out (DSE) or return NULL (NO_DSE) if the
memory you request isn’t available
Returns
A pointer to the allocated memory, or NULL if it fails.
Example
The following code allocates memory to a pointer:
. . .
UCharT *ptr;
ptr = F_Calloc(128, sizeof(UCharT), NO_DSE);
if(ptr == NULL)
F_Printf(NULL, "Couldn't Allocate memory.\n");
. . .
F _ Cha n n el Ap p end ()
F_ChannelAppend() appends the contents of a source channel to a destination
channel. It reads the contents from the current position in the source channel and
appends them to the current position in the destination channel. After
F_ChannelAppend() has finished, the current position for both channels is at the
end.
508
FDK Programmer’s Reference
F_ChannelClose()
...
DK Function Reference
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
ErrorT F_ChannelAppend(ChannelT srcChannel,
ChannelT dstChannel);
Arguments
srcChannel
The source channel
dstChannel
The destination channel
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
Example
The following code appends the contents of the file test1.txt to the file
test2.txt:
. . .
ChannelT srcChan, dstChan;
FilePathT *path1, *path2;
path1 = F_PathNameToFilePath((StringT)"test1.txt",
NULL, FDefaultPath);
path2 = F_PathNameToFilePath((StringT)"test2.txt",
NULL, FDefaultPath);
if((srcChan = F_ChannelOpen(path1,"r")) == NULL) return;
if((dstChan = F_ChannelOpen(path2,"a")) == NULL) return;
F_ChannelAppend(srcChan, dstChan);
. . .
F _ C h a n n el C l o se ( )
F_ChannelClose() performs clean-up tasks required by the operating system and
frees a specified channel. You can’t use a channel after you close it.
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
IntT F_ChannelClose(ChannelT channel);
FDK Programmer’s Reference 509
3
DK Function Reference
F_ChannelCloseTmp()
Arguments
channel
The channel to close
Returns
0 if it succeeds, or a nonzero value if an error occurs.
Example
See “F_ChannelOpen()” on page 512.
F _ C h a n n el C l o se T mp ( )
F_ChannelCloseTmp() frees a temporary channel opened by
F_ChannelMakeTmp() and deletes the temporary file associated with the channel. To
avoid accumulating temporary files, use this function to close all temporary channels.
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
IntT F_ChannelCloseTmp(ChannelT tmpChannel);
Arguments
tmpChannel
The channel to close
Returns
0 if it succeeds, or a nonzero value if an error occurs.
Example
See “F_ChannelMakeTmp()” on page 512.
F_ChannelEof()
F_ChannelEof() returns a nonzero value if the end of a specified channel has been
read. If you set the file pointer to the end of the channel with F_ChannelSeek(),
F_ChannelEof() returns zero.
510
FDK Programmer’s Reference
F_ChannelFlush()
...
DK Function Reference
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
IntT F_ChannelEof(ChannelT channel);
Arguments
channel
The channel to check
Returns
A nonzero value if the end of a channel has been read, or zero if the end of the channel
has not been read or if you have set the file pointer to the end of a channel with
F_ChannelSeek().
Example
See “F_ChannelRead()” on page 515.
F _ C h a n n el F l u s h ()
F_ChannelFlush() flushes all buffered output into the specified channel.
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
IntT F_ChannelFlush(ChannelT channel);
Arguments
channel
The channel for which to flush output
Returns
0 if it succeeds, or a nonzero value if an error occurs.
Example
See “F_ChannelWrite()” on page 519.
FDK Programmer’s Reference
511
3
DK Function Reference
F_ChannelMakeTmp()
F_ChannelMakeTmp()
F_ChannelMakeTmp() creates and opens a temporary channel for reading and
writing. The size flag indicates the estimated size. In the current version of the FDE,
the size flag is not implemented. All channels are disk-based. To close a temporary
channel created with F_ChannelMakeTmp(), use F_ChannelCloseTmp().
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
ChannelT F_ChannelMakeTmp(PUCharT size);
Arguments
size
Not implemented
Returns
The channel it creates, or NULL if it fails.
Example
The following code creates a temporary file and closes it:
. . .
ChannelT tmpChan;
if((tmpChan = F_ChannelMakeTmp(1024)) == NULL)
{
F_Printf(NULL, "Couldn't open temp file.\n");
return;
}
F_ChannelCloseTmp(tmpChan);
. . .
F _ Cha n n el Op en ( )
F_ChannelOpen() opens a channel specified by a filepath.
NOTE: This function works even if FilePathT supplied to F_ChannelOpen() API
is prepared from an HTTP path.
512
FDK Programmer’s Reference
F_ChannelOpen()
...
DK Function Reference
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
ChannelT F_ChannelOpen(FilePathT *path,
StringT flag);
Arguments
path
The path to open.
flag
The file access mode. See the table below for a list of flags.
The string flag can have the following values.
Flag value
Meaning
r
Open the channel for reading. If the channel doesn’t exist,
return NULL.
w
Open the channel for writing. If the specified channel already exists, destroy its
contents.
a
Open the channel for appending. If the channel doesn’t exist, create it.
r+
Open the channel for both reading and writing. If the channel doesn’t exist, return
NULL.
w+
Open the channel for both reading and writing. If the channel exists, destroy its
contents.
a+
Open the channel for both reading and appending. If the channel doesn’t exist,
create it.
Returns
The opened channel if it succeeds, or NULL if it fails.
FDK Programmer’s Reference 513
3
DK Function Reference
F_ChannelPeek()
Example
The following code opens a channel for reading and then closes it:
. . .
ChannelT chan;
FilePathT *path;
path = F_PathNameToFilePath((StringT)"test.txt",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"r")) == NULL)
{
F_Printf(NULL, "Couldn't open file.\n");
return;
}
F_ChannelClose(chan);
. . .
F_ChannelPeek()
F_ChannelPeek() returns the next byte at the current position of a specified channel
without updating the current channel position.
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
IntT F_ChannelPeek(ChannelT channel);
Arguments
channel
The channel for which to get the next byte
Returns
The next byte at the current position of the channel if it succeeds, or -1 if it has reached
the end of the channel.
514
FDK Programmer’s Reference
F_ChannelRead()
...
DK Function Reference
Example
The following code prints the sixth byte of a file:
. . .
ChannelT chan;
FilePathT *path;
IntT nextByte;
path = F_PathNameToFilePath((StringT)"test.txt",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"r")) == NULL) return;
if (F_ChannelSeek(chan, 5, 0)) return;
nextByte = F_ChannelPeek(chan);
if(nextByte != -1)
F_Printf(NULL, "Next byte: %c\n", nextByte);
. . .
F_ChannelRead()
F_ChannelRead() reads from a channel into a specified memory block. If fewer than
size bytes of data remain in the channel, F_ChannelRead() does not read the
remaining data.
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
IntT F_ChannelRead(PtrT ptr,
IntT size,
IntT nitems,
ChannelT channel);
FDK Programmer’s Reference 515
3
DK Function Reference
F_ChannelSeek()
Arguments
ptr
The memory block to which to copy the contents of the channel
size
The size of the items to read
nitems
The number of items to read
channel
The channel from which to read the items
Returns
The number of items read.
Example
The following code reads text from a file and prints it:
. . .
#define BUFFERSIZE (IntT)257
ChannelT chan;
FilePathT *path;
UCharT ptr[BUFFERSIZE];
IntT numread;
path = F_PathNameToFilePath((StringT)"test.txt",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"r")) == NULL)
return;
while(!F_ChannelEof(chan))
{
numread = F_ChannelRead(ptr, sizeof(UCharT),
BUFFERSIZE-1, chan);
ptr[numread] = '\0';
F_Printf(NULL, "%s\n", (StringT)ptr);
}
. . .
F_ChannelSeek()
F_ChannelSeek() sets the position for the next input operation on an input channel.
516
FDK Programmer’s Reference
F_ChannelSize()
...
DK Function Reference
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
IntT F_ChannelSeek(ChannelT channel,
NativeLongT offset,
PUCharT mode);
Arguments
channel
The channel for which to set the input position.
offset
The offset at which to set the input position. It is relative to the position
specified by mode.
mode
Specifies what the offset is relative to. See the table below for a list of
values.
The mode parameter can have the following values.
Mode value
Meaning
0
Offset is relative to the beginning of the channel
1
Offset is relative to the current position of the channel
2
Offset is relative to the end of the channel
Returns
0, if it succeeds or -1 if the seek is illegal.
Example
See “F_ChannelPeek()” on page 514.
F _ C h a n n el S i ze ( )
F_ChannelSize() returns the size in bytes of the file specified by a channel. It is
useful for keeping track of how much you have written to a channel.
FDK Programmer’s Reference 517
3
DK Function Reference
F_ChannelTell()
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
NativeLongT F_ChannelSize(ChannelT channel);
Arguments
channel
The channel to check
Returns
The size of the specified channel in bytes.
Example
The following code prints the size of a channel:
. . .
ChannelT chan;
FilePathT *path;
path = F_PathNameToFilePath((StringT)"test.txt",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"r")) == NULL) return;
F_Printf(NULL, "Channel size: %d bytes\n", F_ChannelSize(chan));
F_ChannelClose(chan);
. . .
F _ C h a n n el Te l l ()
F_ChannelTell() determines the offset of the current byte relative to the beginning
of the specified input channel.
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
NativeLongT F_ChannelTell(ChannelT channel);
518
FDK Programmer’s Reference
F_ChannelWrite()
...
DK Function Reference
Arguments
channel
The channel to check
Returns
The offset of the current byte relative to the beginning of the channel.
Example
The following code prints the current offset of a channel:
. . .
ChannelT chan;
FilePathT *path;
path = F_PathNameToFilePath((StringT)"test.txt",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"r")) == NULL)
{
F_Printf(NULL, "Couldn't open file.\n");
return;
}
F_Printf(NULL, "Current offset: %d bytes\n",
F_ChannelTell(chan));
. . .
F_Chann el Wri te()
F_ChannelWrite() writes data from a specified memory block to a channel. To
make sure the data is written from the internal buffer to the channel, call
F_ChannelFlush() or F_ChannelClose().
Synopsis
#include "fdetypes.h"
#include "fchannel.h"
. . .
IntT F_ChannelWrite(PtrT ptr,
IntT size,
IntT nitems,
ChannelT channel);
FDK Programmer’s Reference 519
3
DK Function Reference
F_CharIsAlphabetic()
Arguments
ptr
The memory block containing the items to write to the channel
size
The size of the items to write
nitems
The number of items to write
channel
The channel to which to write the items
Returns
The number of items written to the channel.
Example
The following code writes text to a file:
. . .
ChannelT chan;
FilePathT *path;
static UCharT ptr[] = "All experience hath shown";
path = F_PathNameToFilePath((StringT)"test.txt",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"w")) == NULL)
return;
F_ChannelWrite(ptr, sizeof(UCharT), F_StrLen(ptr), chan);
F_ChannelFlush(chan);
. . .
F_CharIsAlphabetic()
F_CharIsAlphabetic() determines whether a specified character is an alphabetic
character in the FrameMaker product character set.
NOTE: This function is designed to work with the FrameMaker encoding for Roman
characters. It will also work with single-byte characters in the range x00 through x7F for
Asian language encodings.
Synopsis
#include "fdetypes.h"
#include "fcharmap.h"
. . .
BoolT F_CharIsAlphabetic(UCharT c);
520
FDK Programmer’s Reference
F_CharIsAlphaUTF8()
...
DK Function Reference
Arguments
c
The character to check
Returns
A nonzero value if the character is alphabetic, or 0 if it isn’t.
Example
The following code tests the character 3 to determine whether it is alphabetic. It prints
the string 3 is not alphabetic.
. . .
if(!F_CharIsAlphabetic((UCharT) '3'))
F_Printf(NULL, "3 is not alphabetic\n");
. . .
F_CharIsAlp haUTF8()
Determines whether a specified UTF-8 character is an alphabetic character
Synopsis
#include "fencode.h"
. . .
BoolT F_CharIsAlphaUTF8 (const UCharT *c);
Arguments
c
The character to check
Returns
A nonzero value if the character is an alphabetic character, or 0 if it isn’t
FDK Programmer’s Reference 521
3
DK Function Reference
F_CharIsAlphaNumeric()
Example
The following code prints Δ is Alphabetic
#include "fencode.h"
. . .
UCharT upper_delta[]={0xCE, 0x94};
F_FdeInitFontEncs((ConStringT)"UTF-8");
if (F_CharIsAlphaUTF8(upper_delta))
F_Printf(NULL,"%C is Alphabetic", upper_delta);
F_CharIsAlp haNumeric()
F_CharIsAlphaNumeric() determines whether a specified character is an
alphanumeric (0, 1...9, a...z, or A...Z) character in the FrameMaker product character
set.
NOTE: This function is designed to work with the FrameMaker encoding for Roman
characters. It will also work with single-byte characters in the range x00 through x7F for
Asian language encodings.
Synopsis
#include "fdetypes.h"
#include "fcharmap.h"
. . .
BoolT F_CharIsAlphaNumeric(UCharT c);
Arguments
c
The character to check
Returns
A nonzero value if the character is an alphanumeric character, or 0 if
it isn’t.
Example
The following code tests the character 2 to determine whether it is alphanumeric. It
prints the string 2 is alphanumeric.
. . .
if(F_CharIsAlphaNumeric((UCharT)'2'))
F_Printf(NULL, "2 is alphanumeric\n");
. . .
522
FDK Programmer’s Reference
...
DK Function Reference
F_CharIsAlphaNumericUTF8()
F_CharIsAlp haNumericUTF8()
Determines whether a specified UTF-8 character is an alphanumeric character
NOTE: This function doesn’t return True for numeric characters like Ⅳ (code point
0x2163) that aren’t in a decimal system.
Synopsis
#include "fencode.h"
. . .
BoolT F_CharIsAlphaNumericUTF8 (const UCharT *c);
Arguments
The character to check
c
Returns
A nonzero value if the character is an alphanumeric character, or 0 if it isn’t
Example
The following code prints Δ is AlphaNumeric
#include "fencode.h"
. . .
UCharT upper_delta[]={0xCE, 0x94};
F_FdeInitFontEncs((ConStringT)"UTF-8");
if (F_CharIsAlphaNumericUTF8(upper_delta))
F_Printf(NULL,"%C is AlphaNumeric", upper_delta);
...
F_ C h a r IsC o ntrol()
F_CharIsControl() determines whether a specified character is a FrameMaker
product control character. It returns True for ASCII decimal values 8 (tab), 9 (forced
return), 10 (end-of-paragraph), and 11 (end-of-flow).
NOTE: This function is designed to work with the FrameMaker encoding for Roman
characters. It will also work with single-byte characters in the range x00 through x7F for
Asian language encodings.
FDK Programmer’s Reference 523
3
DK Function Reference
F_CharIsControlUTF8()
Synopsis
#include "fdetypes.h"
#include "fcharmap.h"
. . .
BoolT F_CharIsControl(UCharT c);
Arguments
c
The character to check
Returns
A nonzero value if the character is a FrameMaker product control character, or 0 if it
isn’t.
Example
The following code tests the character 8 (octal 10) to determine whether it is a control
character. It prints the string The character is a control character.
. . .
if(F_CharIsControl((UCharT)'\10'))
F_Printf(NULL, "The character is a control character\n");
. . .
F_ C h a r IsC o ntrolU T F 8()
Determines whether a specified character is a FrameMaker control character. It returns
True for decimal values 8 (tab), 9 (forced return), 10 (end-of-paragraph), and 11 (endof-flow).
Synopsis
#include "fencode.h"
. . .
BoolT F_CharIsAlphaUTF8 (const UCharT *c);
Arguments
c
524
FDK Programmer’s Reference
The character to check
F_CharIsDoubleByte()
...
DK Function Reference
Returns
A nonzero value if the character is a FrameMaker control character, or 0 if it isn’t
Example
The following code prints The character is a control character
#include "fencode.h"
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
if (F_CharIsEolUTF8(&"\x07"))/* decimal value of 0x07 is 7*/
F_Printf(NULL,"The character is a control character");
...
F_CharIsDoubleByte()
F_CharIsDoubleByte() determines whether a pair of UCharTs form a valid
double-byte character in the specified encoding.
Synopsis
#include "fencode.h"
. . .
BoolT F_CharIsDoubleByte(
UCharT firstChar,
UCharT firstChar,
FontEncIdT feId);
Arguments
firstChar
The first character to check
secondChar
The second character to check
feId
The ID of the font encoding to check against
Returns
A nonzero value if firstChar and secondChar comprise a double-byte character, or
0 if not.
FDK Programmer’s Reference 525
3
DK Function Reference
F_CharIsDoubleByteFirst()
Example
The following code scans a string for a double-byte Japanese character.
. . .
StringT myString;
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
IntT i;
BoolT foundIt;
. . .
/* Get myString */
. . .
i = 1;
foundIt = False;
while (myString) {
if(F_CharIsDoubleByte(myString[i], myString[i+1], feId) {
foundIt = True;
break;
}
i++;
}
if (foundIt) {
/* The UCharT’s myString[i] and myString[i+1] comprise a */
/* double-byte char, so you can process them as such. */
. . .
}
. . .
F_CharIsDoubleByteFirst()
F_CharIsDoubleByteFirst() determines whether a UCharT is identified in the
specified font encoding as the first byte of a double-byte character.
Synopsis
#include "fencode.h"
. . .
BoolT F_CharIsDoubleByteFirst(UCharT c, FontEncIdT feId);
526
FDK Programmer’s Reference
...
DK Function Reference
F_CharIsDoubleByteFirst()
Arguments
c
The character to check
feId
The ID of the font encoding to check against
Returns
A nonzero value if c is the first byte of a double-byte character, or 0 if it isn’t.
Example
The following code scans a string for a first byte of a Japanese character.
. . .
StringT myString;
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
IntT i;
BoolT foundFirst;
. . .
/* Get myString */
. . .
i = 1;
foundFirst = False;
while (myString) {
if(F_CharIsDoubleByteFirst(myString[i], feId) {
foundFirst = True;
break;
}
i++;
}
if (foundFirst) {
/* The UCharT myString[i] is the first of a double-byte char
*/
. . .
}
. . .
FDK Programmer’s Reference 527
3
DK Function Reference
F_CharIsDoubleByteSecond()
F_CharIsDoubleByteSecond()
F_CharIsDoubleByteSecond() determines whether a UCharT is identified in the
specified font encoding as the second byte of a double-byte character.
Synopsis
#include "fencode.h"
. . .
BoolT F_CharIsDoubleByteSecond(UCharT c, FontEncIdT feId);
Arguments
c
The character to check
feId
The ID of the font encoding to check against
Returns
A nonzero value if the c is the second byte of a double-byte character, or 0 if it isn’t.
528
FDK Programmer’s Reference
F_CharIsEol()
...
DK Function Reference
Example
The following code scans a string for a first byte of a Japanese character, and then
checks whether the next UCharT is a second byte of a double-byte character. If not, it
traps the character as belonging to the single-byte range of a Japanese font.
. . .
StringT myString;
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
IntT i;
BoolT foundSingle;
. . .
/* Get myString */
. . .
i = 1;
foundSingle = False;
while (myString) {
if(F_CharIsDoubleByteFirst(myString[i], feId) &&
! F_CharIsDoubleByteSecond(myString[i + 1], feId)) {
foundSingle = True;
break;
}
i++;
}
if (foundSingle) {
/* The UCharT myString[i] is in the single-byte range of a */
/* Japanese font */
. . .
}
. . .
F_CharIsEol()
F_CharIsEol() determines whether a specified character is a FrameMaker product
end-of-line (EOL) character. It returns True for ASCII decimal values 9 (forced
return), 10 (end-of-paragraph), and 11 (end-of-flow).
FDK Programmer’s Reference 529
3
DK Function Reference
F_CharIsEolUTF8()
NOTE: This function is designed to work with the FrameMaker encoding for Roman
characters. It will also work with single-byte characters in the range x00 through x7F for
Asian language encodings.
Synopsis
#include "fdetypes.h"
#include "fcharmap.h"
. . .
BoolT F_CharIsEol(UCharT c);
Arguments
The character to check
c
Returns
A nonzero value if the character is a FrameMaker product EOL character, or 0 if it
isn’t.
Example
The following code tests the character 9 (octal 11) to determine whether it is an EOL
character. It prints the string The character is an EOL character.
. . .
if(F_CharIsEol((UCharT) '\11'))
F_Printf(NULL, "The character is an EOL character\n");
. . .
F_CharIsEolUTF8()
Determines whether a specified character is a FrameMaker end-of-line (EOL) character.
It returns True for decimal values 9 (forced return), 10 (end-of-paragraph), and 11
(end-of-flow).
Synopsis
#include "fencode.h"
. . .
BoolT F_CharIsEolUTF8 (const UCharT *c);
530
FDK Programmer’s Reference
F_CharIsHexadecimal()
...
DK Function Reference
Arguments
Returns
A nonzero value if the character is a FrameMaker end-of-line (EOL) character, or 0 if it
isn’t
Example
The following code prints The character is an EOL character
#include "fencode.h"
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
if (F_CharIsEolUTF8(&"\x0B"))/* decimal value of 0x0B is 11 */
F_Printf(NULL,"The character is an EOL character);
...
F_CharIsHexadecimal()
F_CharIsHexadecimal() determines whether a specified character is a
hexadecimal digit (0, 1...9, a...f, or A...F).
NOTE: This function is designed to work with the FrameMaker encoding for Roman
characters. It will also work with single-byte characters in the range x00 through x7F for
Asian language encodings.
Synopsis
#include "fdetypes.h"
#include "fcharmap.h"
. . .
BoolT F_CharIsHexadecimal(UCharT c);
Arguments
c
The character to check
Returns
A nonzero value if the character is a hexadecimal character, or 0 if it isn’t.
FDK Programmer’s Reference 531
3
DK Function Reference
F_CharIsHexadecimalUTF8()
Example
The following code tests the character f to determine whether it is hexadecimal. It
prints the string The character is a Hex digit.
. . .
if(F_CharIsHexadecimal((UCharT) 'f'))
F_Printf(NULL, "The character is a Hex digit.\n");
. . .
F_CharIsHexadecimalUTF8()
Determines whether a specified UTF-8 character is a hexadecimal digit (0, 1...9, a...f, or
A...F)
Synopsis
#include "fencode.h"
. . .
BoolT F_CharIsHexadecimalUTF8 (const UCharT *c);
Arguments
The character to check
c
Returns
A nonzero value if the character is an alphabetic character, or 0 if it isn’t
Example
The following code prints F is Hexadecimal
#include "fencode.h"
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
if (F_CharIsHexadecimalUTF8(&"F"))
F_Printf(NULL,"F is Hexadecimal");
...
532
FDK Programmer’s Reference
F_CharIsLower()
...
DK Function Reference
F_CharIsLower()
F_CharIsLower() determines whether a specified character is a lowercase character
in the FrameMaker product character set.
NOTE: This function is designed to work with the FrameMaker encoding for Roman
characters. It will also work with single-byte characters in the range x00 through x7F for
Asian language encodings.
Synopsis
#include "fdetypes.h"
#include "fcharmap.h"
. . .
BoolT F_CharIsLower(UCharT c);
Arguments
c
The character to check
Returns
A nonzero value if the character is a lowercase character, or 0 if it isn’t.
Example
The following code tests the character a to determine whether it is lowercase. It prints
the string The character is lowercase.
. . .
if(F_CharIsLower((UCharT) 'a'))
F_Printf(NULL, "The character is lowercase\n");
. . .
F_CharIsLowerUTF8()
Determines whether a specified UTF-8 character is a lowercase character
Synopsis
#include "fencode.h"
. . .
BoolT F_CharIsLowerUTF8 (const UCharT *c);
FDK Programmer’s Reference 533
3
DK Function Reference
F_CharIsNumeric()
Arguments
The character to check.
c
Returns
A nonzero value if the character is a lowercase character, or 0 if it isn’t
Example
The following code prints δ is in Lowercase
#include "fencode.h"
. . .
UCharT lower[] = {0xCE, 0xB4};
F_FdeInitFontEncs((ConStringT)"UTF-8");
if (F_CharIsLowerUTF8(lower))
F_Printf(NULL,"%C is in Lowercase", lower);
...
F_CharIsNumeric()
F_CharIsNumeric() determines whether a specified character is a numeric
character in the FrameMaker product character set.
NOTE: This function is designed to work with the FrameMaker encoding for Roman
characters. It will also work with single-byte characters in the range x00 through x7F for
Asian language encodings.
Synopsis
#include "fdetypes.h"
#include "fcharmap.h"
. . .
BoolT F_CharIsNumeric(UCharT c);
Arguments
c
The character to check
Returns
A nonzero value if the character is a numeric character, or 0 if it isn’t.
534
FDK Programmer’s Reference
F_CharIsNumericUTF8()
...
DK Function Reference
Example
The following code tests the character 8 to determine whether it is numeric. It prints
the string The character is numeric.
. . .
if(F_CharIsNumeric((UCharT) '8'))
F_Printf(NULL, "The character is numeric\n");
. . .
F_CharIsNumericUTF8()
Determines whether a specified UTF-8 character is a numeric character in a decimal
system.
NOTE: This function doesn’t return True for numeric characters like Ⅳ (code point
0x2163) that aren’t in a decimal system.
Synopsis
#include "fencode.h"
. . .
BoolT F_CharIsNumericUTF8 (const UCharT *c);
Arguments
Returns
A nonzero value if the character is a numeric character in a decimal system, or 0 if it
isn’t
Example
The following code prints ४ is Numeric
#include "fencode.h"
. . .
StringT devanagiri_four="\xE0\xA5\xAA";
F_FdeInitFontEncs((ConStringT)"UTF-8");
if (F_CharIsNumericUTF8(devanagiri_four))
F_Printf(NULL,"%C is Numeric", devanagiri_four);
...
FDK Programmer’s Reference 535
3
DK Function Reference
F_CharIsUpper()
F_CharIsUpper()
F_CharIsUpper() determines whether a specified character is an uppercase
character in the FrameMaker product character set.
NOTE: This function is designed to work with the FrameMaker encoding for Roman
characters. It will also work with single-byte characters in the range x00 through x7F for
Asian language encodings.
Synopsis
#include "fdetypes.h"
#include "fcharmap.h"
. . .
BoolT F_CharIsUpper(UCharT c);
Arguments
The character to check
c
Returns
A nonzero value if the character is an uppercase character, or 0 if it isn’t.
Example
The following code tests the character H to determine whether it is uppercase. It prints
the string The character is uppercase.
. . .
if(F_CharIsUpper((UCharT) 'H'))
F_Printf(NULL, "The character is uppercase\n");
. . .
F_CharIsUpperUTF8()
Determines whether a specified UTF-8 character is an uppercase character
Synopsis
#include "fencode.h"
. . .
BoolT F_CharIsUpperUTF8 (const UCharT *c);
536
FDK Programmer’s Reference
F_CharToLower()
...
DK Function Reference
Arguments
The character to check
c
Returns
A nonzero value if the character is an uppercase character, or 0 if it isn’t
Example
The following code prints Δ is in Uppercase
#include "fencode.h"
. . .
UCharT upper[]={0xCE, 0x94};
F_FdeInitFontEncs((ConStringT)"UTF-8");
if (F_CharIsUpperUTF8(upper))
F_Printf(NULL,"%C is in Uppercase", upper);
...
F_CharToLower()
F_CharToLower() converts a character in the FrameMaker product character set to
lowercase.
NOTE: This function is designed to work with the FrameMaker encoding for Roman
characters. It will also work with single-byte characters in the range x00 through x7F for
Asian language encodings.
Synopsis
#include "fdetypes.h"
#include "fcharmap.h"
. . .
UCharT F_CharToLower(UCharT c);
Arguments
c
The character to convert
Returns
The specified character, converted to lowercase.
FDK Programmer’s Reference 537
3
DK Function Reference
F_CharToLowerUTF8()
Example
The following code converts a mixed-case string to lowercase. It prints the string
mixed case.
. . .
StringT s;
IntT i;
s = F_StrCopyString((StringT) "mIxeD Case");
for (i= F_StrLen(s); i--; i>= 0)
s[i] = F_CharToLower(s[i]);
F_Printf(NULL, "%s\n", s);
. . .
F_CharTo LowerUTF8()
Converts a UTF-8 character to lowercase
Synopsis
#include "fencode.h"
. . .
VoidT F_CharToLowerUTF8(const UCharT *c, UCharT *newchar);
Arguments
c
The character to convert
newchar
Pointer to the converted character. It must point to a
block of modifiable memory large enough to store the
converted character (a UTF-8 character requires at
most 4 bytes).
Returns
VoidT
Example
The following code prints Lowercase of Δ is δ
538
FDK Programmer’s Reference
F_CharToUpper()
...
DK Function Reference
#include "fencode.h"
. . .
UCharT upper[]={0xCE, 0x94};
UCharT lower[4];
F_FdeInitFontEncs((ConStringT)"UTF-8");
F_CharToLowerUTF8(upper, lower);
F_Printf(NULL,"Lowercase of %C is %C", upper, lower);
...
F_CharTo Upp er()
F_CharToUpper() converts a character in the FrameMaker product character set to
uppercase.
NOTE: This function is designed to work with the FrameMaker encoding for Roman
characters. It will also work with single-byte characters in the range x00 through x7F for
Asian language encodings.
Synopsis
#include "fdetypes.h"
#include "fcharmap.h"
. . .
UCharT F_CharToUpper(UCharT c);
Arguments
c
The character to convert
Returns
The specified character, converted to uppercase.
FDK Programmer’s Reference 539
3
DK Function Reference
F_CharToUpperUTF8()
Example
The following code converts a mixed-case string to uppercase. It prints the string
MIXED CASE.
. . .
StringT s;
IntT i;
s = F_StrCopyString((StringT) "mIxeD Case");
for (i=0; i < F_StrLen(s); i++)
s[i] = F_CharToUpper(s[i]);
F_Printf(NULL, "%s\n", s);
. . .
F_CharTo Upp erUT F8()
Converts a UTF-8 character to uppercase
Synopsis
#include "fencode.h"
. . .
VoidT F_CharToUpperUTF8(const UCharT *c, UCharT *newchar);
Arguments
c
The character to convert
newchar
Pointer to the converted character. It must point to a
block of modifiable memory large enough to store the
converted character (a UTF-8 character requires at
most 4 bytes).
Returns
VoidT
Example
The following code prints Uppercase of δ is Δ
540
FDK Programmer’s Reference
F_CharUTF16ToUTF8()
...
DK Function Reference
#include "fencode.h"
. . .
UCharT upper[4];
UCharT lower[] = {0xCE, 0xB4};
F_FdeInitFontEncs((ConStringT)"UTF-8");
F_CharToUpperUTF8(lower, upper);
F_Printf(NULL,"Uppercase of %C is %C", lower, upper);
...
F_CharUTF16ToUTF8()
Converts a UTF-16 character to a UTF-8 character
Synopsis
#include "fencode.h"
. . .
IntT F_CharUTF16ToUTF8 (const UChar16T *src, UCharT *dest);
Arguments
src
The character to convert
dest
Pointer to the converted character. It must point to a block of modifiable
memory large enough to store the converted character (a UTF-8 character
requires at most 4 bytes).
Returns
The number of bytes (or UTF-8 code points) written in dest
Example
The following code prints 1Б2о3г
FDK Programmer’s Reference 541
3
DK Function Reference
F_CharUTF32ToUTF8()
#include "fencode.h"
. . .
UChar16T russian_U16[]={0x0411, 0x043E, 0x0433, 0x0000};
UChar16T *t = russian_U16;
UCharT dest[5];
IntT i;
F_FdeInitFontEncs((ConStringT)"UTF-8");
while(*t)
{
F_CharUTF16ToUTF8(t,dest);
F_Printf("%d%C",i,dest); /* dest is not null terminated
here*/
F_UTF16NextChar(&t);
}
...
F_CharUTF32ToUTF8()
Converts a UTF-32 character to a UTF-8 character
Synopsis
#include "fencode.h"
. . .
IntT F_CharUTF32ToUTF8 (UChar32T src, UCharT *dest);
Arguments
src
The character to convert
dest
Pointer to the converted character. It must point to a block of modifiable
memory large enough to store the converted character (a UTF-8 character
requires at most 4 bytes).
Returns
The number of bytes (or UTF-8 code points) written in dest
542
FDK Programmer’s Reference
F_CharUTF8ToUTF16()
...
DK Function Reference
Example
The following code prints 1Б2о3г
#include "fencode.h"
. . .
UChar32T russian_U32[]={0x0411, 0x043E, 0x0433, 0x0000};
UCharT dest[5];
IntT i;
F_FdeInitFontEncs((ConStringT)"UTF-8");
for(i=0;i<3;i++)
{
dest[F_CharUTF32ToUTF8(russian_U32[i],dest)]=0;
F_Printf("%d%s",i,dest); /* note dest is null terminated here
*/
}
...
F_CharUT F8ToUTF16()
Converts a UTF-8 character to a UTF-16 character
Synopsis
#include "fencode.h"
. . .
IntT F_CharUTF8ToUTF16 (const UCharT *src, UChar16T *dest)
Arguments
src
The character to convert
dest
Pointer to the converted character. It must point to a block of modifiable
memory large enough to store the converted character (a UTF-16 character
requires at most 2 code units of 2 bytes each).
Returns
The number of UChar16T (or UTF-16 code points) written in dest
FDK Programmer’s Reference 543
3
DK Function Reference
F_CharUTF8ToUTF32()
Example
The following code prints 1,0x411
#include "fencode.h"
. . .
UChar16T russian_U16[2];
IntT n;
F_FdeInitFontEncs((ConStringT)"UTF-8");
n = F_CharUTF8ToUTF16("\xD0\x91",russian_U16);
F_Printf("%d,%x", n, russian_U16[0]);
...
F_CharUT F8ToUTF32()
Converts a UTF-8 character to a UTF-32 character
Synopsis
#include "fencode.h"
. . .
UChar32T F_CharUTF8ToUTF32 (const UCharT *src);
Arguments
src
The character to convert
Returns
The character in UTF-32
Example
The following code prints 0x411
544
FDK Programmer’s Reference
F_ClearHandle()
...
DK Function Reference
#include "fencode.h"
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
F_Printf("%x",F_CharUTF8ToUTF32("\xD0\x91"));
...
F _ C l e ar H a n d l e ( )
F_ClearHandle() initializes to zero a handle’s block of data.
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
ErrorT F_ClearHandle(HandleT handle);
Arguments
handle
The handle specifying the block of data to initialize
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
Example
See “F_AllocHandle()” on page 62.
F_ClearPtr()
F_ClearPtr() initializes the memory block associated with a pointer
to zero.
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
ErrorT F_ClearPtr(PtrT ptr,
UIntT size);
FDK Programmer’s Reference 545
3
DK Function Reference
F_CopyPtr()
Arguments
ptr
The pointer specifying the block of data to initialize
size
The size of the block of data
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
Example
See “F_Alloc()” on page 61.
F_CopyPtr()
F_CopyPtr() copies from the memory area specified by one pointer to the memory
area specified by another pointer.
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
ErrorT F_CopyPtr(PtrT srcPtr,
PtrT dstPtr,
UIntT numBytes);
Arguments
srcPtr
The pointer to the memory to be copied. It must be a valid pointer pointing
to at least numBytes of memory.
dstPtr
The pointer to the memory to copy over. It must be a valid pointer pointing
to at least numBytes of modifiable memory.
numBytes
The number of bytes to be copied.
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
546
FDK Programmer’s Reference
F_DeleteFile()
...
DK Function Reference
Example
The following code copies from the memory area specified by one pointer to the
memory area specified by another pointer:
. . .
UCharT *srcPtr = NULL, *dstPtr = NULL;
srcPtr = F_Alloc(256, NO_DSE);
if(srcPtr == NULL)
return;
dstPtr = F_Alloc(256, NO_DSE);
if(dstPtr == NULL)
return;
if (F_CopyPtr(srcPtr, dstPtr, 256) != FdeSuccess)
F_Printf(NULL, "Couldn't copy pointer.\n");
. . .
F_DeleteFile()
F_DeleteFile() removes the file or directory specified by a filepath.
F_DeleteFile() fails if permission is denied, the filepath specifies a file or directory
that does not exist, or the filepath specifies a directory that is
not empty.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
ErrorT F_DeleteFile(FilePathT *filepath);
Arguments
filepath
The filepath of the file to delete
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
FDK Programmer’s Reference 547
3
DK Function Reference
F_DigitValue()
Example
The following code deletes the file tmp.txt from the tmp directory:
. . .
FilePathT *path;
path = F_PathNameToFilePath("\<r\>\<c\>tmp\<c\>tmp.txt",
NULL, FDIPath);
F_DeleteFile(path);
. . .
F _ D i g i t Va l u e ( )
Returns the numerical value of a UTF-8 character that is a decimal numeric
NOTE: This function doesn’t return the value of numeric characters like Ⅳ (code point
0x2163) that aren’t in a decimal system.
Synopsis
#include "fencode.h"
. . .
IntT F_DigitValue (UCharT *s);
Arguments
s
The character whose numeric value must be determined.
Returns
The numeric value (0-9) of the character if it is numeric, or -1 if it isn’t
Example
The following code prints ४ + २ = 6
548
FDK Programmer’s Reference
F_DuplicateHandle()
...
DK Function Reference
...
StringT devanagiri_four="\xE0\xA5\xAA";
StringT devanagiri_two ="\xE0\xA5\xA8";
IntT res;
F_FdeInitFontEncs((ConStringT)"UTF-8");
res = F_DigitValue(devanagiri_four)
+F_DigitValue(devanagiri_two);
F_Printf(NULL,"%C + %C is %d", devanagiri_four, devanagiri_two,
res);
...
F_DuplicateHandle()
F_DuplicateHandle() copies the block of memory specified by a handle to another
handle.
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
BoolT F_DuplicateHandle(HandleT srcHandle,
HandleT dstHandle);
Arguments
srcHandle
A handle specifying the block of memory to be copied
dstHandle
A handle specifying the block of memory to which to copy
If the block of memory specified by srcHandle is larger than that specified by
dstHandle, F_DuplicateHandle() copies only as much as dstHandle will
hold. It does not allocate additional memory to dstHandle.
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
FDK Programmer’s Reference 549
3
DK Function Reference
F_DuplicatePtr()
Example
The following code duplicates a handle:
. . .
HandleT srcHndl, dstHndl;
srcHndl = F_AllocHandle(66000, NO_DSE);
dstHndl = F_AllocHandle(66000, NO_DSE);
F_DuplicateHandle(srcHndl, dstHndl);
. . .
F _ D u p l i ca t e P tr ( )
F_DuplicatePtr() allocates a new block of memory and copies the contents of a
specified block of memory to it. F_DuplicatePtr() doesn’t perform a clever copy.
If the specified block of memory contains pointers, it duplicates the pointers but not the
blocks to which they point.
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
PtrT F_DuplicatePtr(PtrT srcPtr,
UIntT size,
PUCharT flags);
Arguments
srcPtr
A pointer specifying the block of memory to duplicate
size
The size of the block of memory to duplicate
flags
Flag specifying whether to bail out (DSE) or return NULL (NO_DSE) if the
memory you request isn’t available
Returns
The new block of memory if it succeeds, or NULL if it fails.
550
FDK Programmer’s Reference
F_Exit()
...
DK Function Reference
Example
The following code duplicates a pointer:
. . .
UCharT *srcPtr = NULL, *dstPtr = NULL;
srcPtr = F_Alloc(256, NO_DSE);
if(srcPtr == NULL) return;
dstPtr = F_DuplicatePtr(srcPtr, 256, NO_DSE);
if(dstPtr == NULL)
F_Printf(NULL, "Couldn't duplicate pointer.\n");
. . .
F_Exit()
F_Exit() cleans up and exits the application with number n.
..............................................................................
IMPORTANT: If you are writing an API client, do not call F_Exit(). Use
F_ApiBailOut() instead.
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fprogs.h"
. . .
VoidT F_Exit(IntT n);
Arguments
n
The number with which to exit
Returns
VoidT.
Example
The following code exits an application:
. . .
F_Exit(-5);
. . .
FDK Programmer’s Reference 551
3
DK Function Reference
F_FdeEncodingsInitialized()
F_FdeEncodingsIn itialized()
Determines whether the FDE encoding data has been correctly initialized. If this doesn’t
return true, F_FdeInit or F_FdeInitFontEncs has not been called or has failed and
the FDE won’t function correctly. Use this function, along with F_GetICUDataDir, to
check that the FDE has been correctly set up before making FDE calls.
Synopsis
#include "fencode.h"
. . .
BoolT F_FdeEncodingsInitialized (VoidT);
Arguments
VoidT
Returns
A nonzero value if FDE font encoding has been initialized by F_FdeInit or
F_FdeInitFontEncs, or 0 if it hasn’t.
Example
The following code prints Font Encoding Data Initialized
#include "fencode.h"
...
F_FdeInitFontEncs((ConStringT)"UTF-8");
if (F_FdeEncodingsInitialized())
F_Printf(NULL,"Font Encoding Data Initialized");
...
F_FdeInit()
F_FdeInit() initializes the FDE. Call it before you call any other FDE functions.
..............................................................................
IMPORTANT: If you call F_ApiBailOut(), you must call F_FdeInit() to
reinitialize the FDE.
..............................................................................
552
FDK Programmer’s Reference
F_FdeInitFontEncs()
...
DK Function Reference
Synopsis
#include "fdetypes.h"
. . .
ErrorT F_FdeInit(VoidT);
Returns
VoidT.
Example
The following code initializes the FDE:
. . .
F_FdeInit();
. . .
F_FdeInitFontEncs()
F_FdeInitFontEncs() initializes the current session’s font encoding data for your
client to use. It also sets the font encoding for any dialog boxes your client displays. Call
it before you call any other FDE functions that have to do with font encodings.
..............................................................................
IMPORTANT: If you call F_ApiBailOut(), you must call
F_FdeInitFontEncs() to reinitialize the font encoding data for your client.
..............................................................................
Calling this function with "UTF-8" as a parameter enables Unicode Mode for the FDE.
Calling this function with any other encoding disables Unicode Mode and enables
Compatibility Mode for the FDE.
Synopsis
#include "fencode.h"
. . .
FontEncIdT F_FdeInitFontEncs(ConStringT fontEncName);
Arguments
fontEncName
The name of the font encoding to use for your client’s dialog boxes.
Possible values for fontEncName are:
FDK Programmer’s Reference 553
3
DK Function Reference
F_FdeInitFontEncs()
Value
Means
FrameRoman
Roman text
JISX0208.ShiftJIS
Japanese text
BIG5
Traditional Chinese text
GB2312-80.EUC
Simplified Chinese text
KSC5601-1992
Korean text
UTF-8
Enables Unicode Mode for the FDE
Returns
The ID of the font encoding you assigned to your dialog boxes. If the FDE does not
recognize fontEncName as a valid encoding name for the current session, this function
returns the ID for the Roman encoding.
Example
The following code initializes the FDE and ensures the dialog box encoding is one the
client can support. If the dialog box encoding for the current session is Japanese or
Simplified Chinese, it passes that encoding the F_FdeInitFontEncs(). Otherwise,
it passes Roman to F_FdeInitFontEncs():
. . .
FontEncIdT feId;
StringT encName;
F_FdeInit();
encName = F_ApiGetString(0, FV_SessionId,
FP_DialogEncodingName);
if (F_StrIEqual( encName, "JISX0208.ShiftJIS") ||
F_StrIEqual( encName, "GB2312-80")
feId = F_FdeInitFontEncs((ConStringT) encName);
else
feId = F_FdeInitFontEncs((ConStringT) "FrameRoman");
. . .
554
FDK Programmer’s Reference
F_FilePathBaseName()
...
DK Function Reference
F_ F i l e P a t h BaseN ame()
F_FilePathBaseName() returns the basename of a specified filepath. If a filepath
ends with a directory delimiter, its basename is the string immediately before the
directory delimiter. If a filepath doesn’t end with a directory delimiter, the basename is
the string after the last directory delimiter. For example, the basename of the following
filepaths:
/usr/root/mydirectory/
/usr/root/mydirectory
is mydirectory.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
StringT F_FilePathBaseName(FilePathT *filepath);
Arguments
filepath
The filepath for which to return the basename
Returns
The basename of the specified filepath, or NULL if there is insufficient memory.
F_FilePathBaseName() returns an empty string if filepath specifies a root
directory. It returns NULL if there is not enough memory. F_FilePathBaseName()
allocates the returned string with F_Alloc(). You must use F_Free() to free this
string.
Example
The following code prints the string Basename: tmp.txt:
. . .
FilePathT *path;
StringT basename;
path = F_PathNameToFilePath("\<r\>\<c\>tmp\<c\>tmp.txt",
NULL, FDIPath);
basename = F_FilePathBaseName(path);
F_Printf(NULL, "Basename: %s\n", basename);
F_Free(basename);
. . .
FDK Programmer’s Reference 555
3
DK Function Reference
F_FilePathCloseDir()
F_FilePathCloseDir()
F_FilePathCloseDir() closes a file handle opened by F_FilePathOpenDir().
After the handle is closed, you can’t reference it.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
VoidT F_FilePathCloseDir(DirHandleT handle);
Arguments
handle
The file handle to close
Returns
VoidT.
Example
For an example of F_FilePathCloseDir() in use, see “F_FilePathGetNext()” on
page 558.
F_ F i l e P a t h C o p y()
F_FilePathCopy() returns a copy of a specified filepath.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
FilePathT *F_FilePathCopy(FilePathT *filepath);
Arguments
filepath
The filepath to return a copy of
Returns
A copy of the specified filepath, or NULL if it fails to allocate enough memory for the
new filepath.
556
FDK Programmer’s Reference
F_FilePathFree()
...
DK Function Reference
Example
The following code copies a filepath:
. . .
FilePathT *path1, *path2;
path1 = F_PathNameToFilePath("\<r\>\<c\>tmp\<c\>tmp.txt",
NULL, FDIPath);
path2 = F_FilePathCopy(path1);
. . .
F_FilePathFree(path1);
F_FilePathFree(path2);
. . .
F_FilePathFree()
F_FilePathFree() frees the resources associated with a filepath.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
ErrorT F_FilePathFree(FilePathT *path);
Arguments
path
The filepath to free
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
Example
See “F_FilePathCopy()” on page 556.
FDK Programmer’s Reference 557
3
DK Function Reference
F_FilePathGetNext()
F_FilePathGetNext()
F_FilePathGetNext() returns the next file in a specified directory. You can use it
to scan the files in a directory. To get the directory handle, use
F_FilePathOpenDir(). Each time you call F_FilePathGetNext(), it allocates
a new FilePathT structure. Use F_FilePathFree() to free each FilePathT
structure when you are done with it.
It is illegal to call F_FilePathGetNext() if you have closed the specified directory
by calling F_FilePathCloseDir().
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
FilePathT *F_FilePathGetNext(DirHandleT handle, IntT *statusp);
Arguments
handle
The directory for which to get the next file
statusp
A pointer to memory in which the function can store a
status value
Returns
The next file or subdirectory in the specified directory, or NULL if there is no file or
subdirectory entry left in the directory. If F_FilePathGetNext() fails to construct
the filepath, it returns NULL and sets the value of statusp to a nonzero value.
558
FDK Programmer’s Reference
F_FilePathOpenDir()
...
DK Function Reference
Example
The following code prints the pathnames of all the files and directories in the tmp
directory:
. . .
DirHandleT handle;
FilePathT *path, *file;
IntT statusp;
StringT pathname;
/* Get filepath and directory handle of tmp directory. */
path = F_PathNameToFilePath((StringT)"\<r\>\<c\>tmp",
NULL, FDIPath);
handle = F_FilePathOpenDir(path, &statusp);
if (handle == 0)
{
F_FilePathFree(path);
return;
}
/* Traverse files and directories in tmp directory. */
while((file = F_FilePathGetNext(handle, &statusp)) != NULL)
{
pathname = F_FilePathToPathName(file, FDIPath);
F_Printf(NULL, "%s\n", pathname);
F_Free(pathname);
F_FilePathFree(file);
}
/* Free tmp directory handle and filepath. */
F_FilePathCloseDir(handle);
F_FilePathFree(path);
. . .
See also
“F_FilePathOpenDir()” on page 559 and “F_FilePathCloseDir()” on page 556.
F_FilePathOpenDir()
F_FilePathOpenDir() allocates and returns a directory handle that you can use to
call F_FilePathGetNext() to obtain the file and subdirectory entries in the
directory.
FDK Programmer’s Reference 559
3
DK Function Reference
F_FilePathParent()
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
DirHandleT F_FilePathOpenDir(FilePathT *filepath,
IntT *statusp);
Arguments
filepath
The filepath of the directory
statusp
A pointer to memory in which the function can store a
status value
Returns
A handle to the directory, or NULL if the specified directory does not exist or is
unreadable. F_FilePathOpenDir() returns NULL and sets the value of statusp
to a nonzero value if there is not enough memory.
Example
See “F_FilePathGetNext()” on page 558 and “F_FilePathCloseDir()” on page 556.
F_FilePathPare nt()
F_FilePathParent() returns the filepath of the parent directory of a specified
directory.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
FilePathT *F_FilePathParent(FilePathT *path,
IntT *statusp);
560
FDK Programmer’s Reference
F_FilePathProperty()
...
DK Function Reference
Arguments
path
The filepath of the directory
statusp
A pointer to memory in which the function can store a
status value
Returns
The filepath of the parent directory of the specified directory, or NULL if path
specifies a root directory. If F_FilePathParent() fails, it returns NULL and sets
statusp to a nonzero value.
Example
The following code prints the pathname of the tmp directory (the parent of the mydir
directory):
. . .
IntT statusp;
FilePathT *path, *parentPath;
StringT pathname;
path = F_PathNameToFilePath("\<r\>\<c\>tmp\<c\>mydir",
NULL, FDIPath);
parentPath = F_FilePathParent(path, &statusp);
pathname = F_FilePathToPathName(parentPath, FDIPath);
F_Printf(NULL, "%s\n", pathname);
. . .
F_FilePathProperty()
F_FilePathProperty() returns information about the file or directory specified by
a filepath.
NOTE: This function works for HTTP paths as well. Property of the cached file is
returned instead of the server file.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
IntT F_FilePathProperty(FilePathT *filepath,
IntT pflags);
FDK Programmer’s Reference 561
3
DK Function Reference
F_FilePathToPathName()
Arguments
filepath
The filepath of the file or directory.
pflags
Bit flags specifying the file or directory characteristics to evaluate. See the
table below for a list of flags.
You can OR the following bit flags into pflags.
Bit mask
Information returned
FF_FilePathReadable
Whether filepath is readable
FF_FilePathWritable
Whether filepath is writable
FF_FilePathDirectory
Whether filepath is a directory
FF_FilePathFile
Whether filepath is a file
FF_FilePathExist
Whether filepath exists
Returns
A bit mask for the properties specified by pflags.
Example
The following code prints the string The file is readable and writable if
the tmp.txt file in the tmp directory is readable and writable:
. . .
IntT pflags;
FilePathT *path;
pflags = FF_FilePathReadable | FF_FilePathWritable;
path = F_PathNameToFilePath("\<r\>\<c\>tmp\<c\>tmp.txt",
NULL, FDIPath);
if(F_FilePathProperty(path, pflags) == pflags)
F_Printf(NULL, "The file is readable and writable\n");
. . .
F_FilePathToPathName()
F_FilePathToPathName() converts a FilePathT filepath to a platformdependent pathname string for a specified platform.
This function also supports HTTP paths.
562
FDK Programmer’s Reference
F_FilePathToPathName()
...
DK Function Reference
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
StringT F_FilePathToPathName(FilePathT *filepath,
PathEnumT platform);
Arguments
filepath
The filepath to convert.
platform
The platform for which to produce a pathname. To avoid possible errors
when you port your clients to different platforms, set platform to
FDefaultPath.
Returns
The pathname, or NULL if platform specifies a platform other than the platform on
which the client is currently running or if F_FilePathToPathName() fails to
convert the pathname to a device-independent pathname.
F_FilePathToPathName() allocates the returned string with F_Alloc(). Use
F_Free() to free this string when you are done with it.
Example
The following code creates a filepath from the device-independent pathname
\<r\>\<c\>tmp\<c\>tmp.txt. It uses F_FilePathToPathName() to get a
platform-specific pathname from the filepath.
. . .
FilePathT *path;
StringT pathname;
path = F_PathNameToFilePath("\<r\>\<c\>tmp\<c\>tmp.txt",
NULL, FDIPath);
pathname = F_FilePathToPathName(path, FDefaultPath);
F_Printf(NULL, "%s\n", pathname);
F_Free(pathname);
. . .
This code prints current_drive_letter:\tmp\txt.
.
FDK Programmer’s Reference 563
3
DK Function Reference
F_FontEncId()
F_FontEncId()
F_FontEncId() returns the ID for the named font encoding. Before calling this
function, you must have called F_FdeInitFontEncs() to initialize the font encoding
data.
This function supports UTF-8.
Synopsis
#include "fencode.h"
. . .
FontEncIdT F_FontEncId(ConStringT fontEncName);
Arguments
fontEncName
The name of the font encoding to use.
Possible values for fontEncName are:
Value
Means
FrameRoman
Roman text
JISX0208.ShiftJIS
Japanese text
BIG5
Traditional Chinese text
GB2312-80.EUC
Simplified Chinese text
KSC5601-1992
Korean text
Returns
The ID of the font encoding you specified. If the FDE does not recognize
fontEncName as a valid encoding name for the current session, this function returns
the ID for the FrameRoman encoding.
564
FDK Programmer’s Reference
F_FontEncName()
...
DK Function Reference
Example
If the encoding for the current session’s user onterface is JISX0208.ShiftJIS, the
code returns the ID for that encoding. Otherwise, it returns the ID for the FrameRoman
encoding.
FontEncIdT feId;
StringT encName;
F_FdeInit();
encName = F_ApiGetString(0, FV_SessionId,
FP_DialogEncodingName);
. . .
feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
The following code prints UTF-8
...
FontEncIdT feId;
F_FdeInitFontEncs((ConStringT) "UTF-8");
feId = F_TextEncToFontEnc(F_EncUTF8);
if (feId == F_FontEncId("UTF-8"))
F_Printf(NULL, F_FontEncName(feId));
...
.
F_FontEncName()
F_FontEncName() returns the name of the font encoding indicated by the specified
FontEncIdT. Before calling this function, you must have called
F_FdeInitFontEncs() to initialize the font encoding data.
This function can handle UTF-8 encoding.
Synopsis
#include "fencode.h"
. . .
ConStringT F_FontEncName(FontEncIdT fontEncId);
FDK Programmer’s Reference 565
3
DK Function Reference
F_FontEncToTextEnc()
Arguments
fontEncId
The ID of the font encoding to use.
Returns
The name of the font encoding associated with the specified FontEncIdT, or NULL if
fontEncId is not a valid ID for the session.
Possible font encoding names are :
Value
Means
FrameRoman
Roman text
JISX0208.ShiftJIS
Japanese text
BIG5
Traditional Chinese text
GB2312-80.EUC
Simplified Chinese text
KSC5601-1992
Korean text
UTF-8
Unicode UTF-8 encoding
Example
. . .
FontEncIdT feId;
ConStringT encName
encName = F_FontEncName(feId);
. . .
/* Be sure to free encName when you are through */
F_FontEncToTextEnc()
Converts from FontEncIdT to FTextEncodingT
NOTE: This function has different behaviors for Compatibility Mode and Unicode
Mode. In Unicode Mode, if no match is found, UTF-8 is the default output. In
Compatibility Mode, the default output is FrameRoman.
566
FDK Programmer’s Reference
F_Free()
...
DK Function Reference
Synopsis
#include "fencode.h"
. . .
FTextEncodingT F_FontEncToTextEnc (FontEncIdT feId);
Arguments
Returns
The text encoding corresponding to the font encoding
Example
The following code converts the string myText from the current Dialog Encoding to
UTF-8 and prints it on the console:
#include "fencode.h"
. . .
F_FdeInit();
F_FdeInitFontEncs("UTF-8");/* Sets FDE to run in Unicode Mode */
F_ApiEnableUnicode(False); /* Sets APIs to run in Compatibility
Mode */
myText = F_ApiGetString(...); /* will return in Dialog Encoding
dlgEnc*/
encName = F_ApiGetString(0, FV_SessionId,
FP_DialogEncodingName);
FTextEncodintT dlgEnc =
F_FontEncToTextEnc(F_FontEncId(encName));
convertedText = F_StrConvertEnc(myText, dlgEnc, F_EncUTF8);
F_Printf(NULL, "%s", convertedText); /* convertedText is in UTF8 */
...
F_Free()
F_Free() frees the memory associated with a specified pointer.
FDK Programmer’s Reference 567
3
DK Function Reference
F_FreeHandle()
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
ErrorT F_Free(PtrT ptr);
Arguments
ptr
A pointer to the memory to free
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
Example
See “F_Alloc()” on page 61.
F_FreeHandle()
F_FreeHandle() frees allocated memory for a handle that is not locked.
..............................................................................
IMPORTANT: Attempting to dereference a handle after freeing it may cause serious
errors.
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
ErrorT F_FreeHandle(HandleT handle);
Arguments
handle
The handle to free
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
Example
See “F_AllocHandle()” on page 62.
568
FDK Programmer’s Reference
F_GetFilePath()
...
DK Function Reference
F_GetFilePath ()
F_GetFilePath() returns a platform-independent filepath associated with an open
channel.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
FilePathT *F_GetFilePath(ChannelT channel);
Arguments
channel
The channel associated with the filepath
Returns
The platform-independent filepath associated with the specified channel, or NULL if it
fails. Free the returned filepath with F_FilePathFree() when you are finished with
it.
Example
The following code creates a temporary channel, gets the filepath associated with it, and
prints its platform-specific pathname:
. . .
FilePathT *path;
StringT pathname;
ChannelT tmpChan;
/* Create the temporary channel. */
if((tmpChan = F_ChannelMakeTmp(1024))
return;
path = F_GetFilePath(tmpChan); /* Get
pathname = F_FilePathToPathName(path,
F_Printf(NULL, "The temporary channel
F_FilePathFree(path);
== NULL)
filepath from channel.*/
FDefaultPath);
is %s\n", pathname);
F_Free(pathname);
. . .
F_GetICUDataDir()
Gets the currently set ICU data directory for the calling process
FDK Programmer’s Reference 569
3
DK Function Reference
F_GetHandleSize()
NOTE: ICU data directory is set on a per-process basis. Certain types of clients, like
synchronous DLL clients on Windows, reside in the same process space as
FrameMaker. Such clients do not need to set the ICU data directory since FrameMaker
sets the ICU data directory for its process. Thus, for such clients, F_GetICUDataDir will
return the ICU data directory set for the FrameMaker process and therefore will return
non-null even if the directory has not explicitly been set using F_SetICUDataDir in the
client.
NOTE: The path returned by this call must not be freed.
Synopsis
#include "fencode.h"
. . .
ConStringT F_GetICUDataDir (VoidT);
Arguments
VoidT
Returns
The currently set ICU data directory path for the calling process
Example
The following code sets the ICU data directory of a client to C:\icu_data if it isn’t
set already:
...
ConStringT icu_dir = F_GetICUDataDir();
if (!icu_dir || !*icu_dir)
F_SetICUDataDir((ConStringT) "C:\\icu_data");
...
F_GetHandleSize()
F_GetHandleSize() returns the size of a handle’s block of data.
570
FDK Programmer’s Reference
F_HandleEqual()
...
DK Function Reference
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
UIntT F_GetHandleSize(HandleT handle);
Arguments
handle
The handle to return the data block size of
Returns
The size of the handle’s block of data in bytes.
Example
See “F_AllocHandle()” on page 62.
F_Hand leEqu al()
F_HandleEqual() determines whether blocks of memory specified by two handles
have equal contents.
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
BoolT F_HandleEqual(HandleT handle1,
HandleT handle2);
Arguments
handle1
The first handle
handle2
The second handle
Returns
True if the blocks of memory specified by handle1 and handle2 have equal
contents.
FDK Programmer’s Reference 571
3
DK Function Reference
F_HashCreate()
Example
The following code compares the contents of two blocks of memory:
. . .
HandleT hndl1, hndl2;
hndl1 = F_AllocHandle(66000, NO_DSE);
hndl2 = F_AllocHandle(66000, NO_DSE);
if(F_HandleEqual(hndl1, hndl2))
F_Printf(NULL, "The handles are equal.\n");
. . .
F_HashCreate()
F_HashCreate() creates a hash table.
Synopsis
#include "fdetypes.h"
#include "fhash.h"
. . .
HashT F_HashCreate(StringT name, /* Name of the table */
IntT minSize, /* Minimum size of the table */
PShortT keyLen, /* Size of keys */
GenericT notFound, /* Returned if searched key not found */
/* Determine if cell can be reused */
BoolT (*deadQuery)(GenericT),
/* Called when cell is deleted */
VoidT (*removeNotify)(GenericT),
/* Converts key to string*/
Void(*T stringifyMe)(PtrT, UCharT *));
572
FDK Programmer’s Reference
F_HashCreate()
...
DK Function Reference
Arguments
name
The name of the table; useful for debugging.
minSize
A size suggestion for the memory allocation routines when the FDE
creates the hash table. If you specify 0, theFDE allocates memory
according to its default calculations.
keyLen
The size, in bytes, of a hash key. For string keys, specify
KEY_IS_STRING.
notFound
The value for other F_Hash routines to return if they don’t find a specific
key.
deadQuery
A callback to determine if cell can be reused, or 0 (meaning, don't call any
function here; assume that the table cell cannot be reused).
removeNotify
A callback to invoke when a value is being deleted,(e.g., during
F_HashRemove and F_HashDestroy), or 0 (meaning no callback). You
could use it, for example, to delete a data structure pointed to by the value.
stringifyMe
A function to produce a printable string from a key. Typically used for
debugging.
..............................................................................
IMPORTANT: If the keys are strings, you must specify KEY_IS_STRING for keyLen
and 0 for stringifyMe. If your keys are not strings, you must specify a value for
keyLen, and you must specify a function for stringifyMe.
..............................................................................
The function specified by deadQuery is called as the hash routines maintain the hash
table. You should only specify this function if your code can determine the validity of
the cell’s contents. To It is declared as:
BoolT deadQuery(GenericT datum);
The function specified by removeNotify is called when a cell is deleted. It provides
an opportunity to free any data associated with the table cell. It is declared as:
VoidT removeNotify(GenericT datum);
Within this funciton, you can deallocate memory used by the values. (The FDK
deallocates memory used by the keys.) If you don’t need to deallocate memory for table
cells, pass 0 for this argument.
If the key is not a string, you must specify a callback for stringifyMe. It is declared
as:
VoidT stringifyMe(PtrT key, StringT info);
FDK Programmer’s Reference 573
3
DK Function Reference
F_HashCreate()
You can use the callback to convert the key to a string, or you can specify a function that
always creates an empty string, for example:
VoidT noString(PtrT x, UCharT *y) {
*y = 0;
}
Returns
The hash table, or NULL on failure.
Example
The following code creates a hash table and sets 26 entries. The data for each entry is a
structure that contains a string and an integer. The code also shows a callback to free the
data as each cell is deleted.
574
FDK Programmer’s Reference
F_HashCreate()
...
DK Function Reference
. . .
/* Structure for the cell data */
typedef struct {
StringT type;
IntT count;
} myDataT;
/* Callback to free cell data */
VoidT freeCell(GenericT datum)
{
myDataT *data = (myDataT *) datum;
F_Free(data->type);
F_Free(data);
}
. . .
IntT i;
UCharT c;
UCharT s[2];
myDataT *data;
HashTableT *ht;
/* Create a hash table */
ht = F_HashCreate("myHash",0,KEY_IS_STRING,0,0,freeCell,0);
/* Populate the table with 26 cells. */
for(i=0;i<26;i++) {
data = F_Alloc(sizeof(myDataT), DSE);
F_ClearPtr(data, sizeof(myDataT));
c = (UCharT)('A'+i);
F_Sprintf(s, "%c", c);
data->type = F_StrCopyString((StringT)"X");
data->count = (IntT)0;
F_HashSet(ht, s, (GenericT) data);
}
/* Get a cell from the table. */
FDK Programmer’s Reference 575
3
DK Function Reference
F_HashDestroy()
data = (myDataT *)F_HashGet(ht, "A");
if(data)
F_Printf(NULL, "\n%s: %d\n", data->type, data->count);
F_HashDestroy()
F_HashDestroy() deletes a hash table and all of its entries. If you specified a
callback to handle cell deletion, the FDK calls that function for each cell
F_HashDestroy() deletes.
Synopsis
#include "fdetypes.h"
#include "fhash.h"
. . .
VoidT F_HashDestroy(HashTableT *table);
Arguments
table
The hash table to delete
Returns
VoidT.
Example
The following code destroys a hash table:
. . .
HashTableT *mytable;
F_HashDestroy(mytable);
. . .
F_HashEnumerate()
F_HashEnumerate() accesses each table cell one by one, and calls a specified
function with the key and datum of each cell; the order of access is arbitrary. The
function you specify to handle the table cell should never delete the datum.
576
FDK Programmer’s Reference
F_HashEnumerate()
...
DK Function Reference
Synopsis
#include "fdetypes.h"
#include "fhash.h"
. . .
VoidT F_HashEnumerate(HashTableT *table,
IntT (*proc)(PtrT, GenericT));
Arguments
table
The hash table
proc
The function to call
The function specified by proc should be defined as:
IntT proc(PtrT key,
GenericT datum);
If this function returns 0, enumeration stops.
Returns
VoidT.
Example
The following code prints out the data associated with each entry in the hash table:
. . .
IntT EnumFuncString(PtrT key, GenericT datum);
HashTableT *mytable;
. . .
F_HashEnumerate(mytable, (FunctionT)EnumFuncString);
. . .
IntT EnumFuncString(PtrT key, GenericT datum)
{
myDataT *data = (myDataT *) datum;
F_Printf(NULL, "Type: %s, count %d.\n",
data->type, data->count
return True;
}
. . .
FDK Programmer’s Reference 577
3
DK Function Reference
F_HashGet()
F_HashGet()
F_HashGet() fetches an entry from the hash table. The return value is of type
GenericT, you must cast it to the desired type before you can use it.
Synopsis
#include "fdetypes.h"
#include "fhash.h"
. . .
GenericT F_HashGet(HashT table,
PtrT key);
Arguments
table
The hash table
key
The key of the entry to get
Returns
The entry in the hash table with the specified key.
Example
For an example, see “F_HashCreate()” on page 572.
F_HashRemove()
F_HashRemove() removes an entry from the hash table. If you specified a callback to
handle cell deletion, the FDK calls that function for each cell F_HashRemove()
deletes.
Synopsis
#include "fdetypes.h"
#include "fhash.h"
. . .
VoidT F_HashRemove(F_HashT table,
PtrT key);
578
FDK Programmer’s Reference
F_HashReportOnData()
...
DK Function Reference
Arguments
table
The hash table
key
The key of the entry to get
Returns
VoidT.
Example
The following code removes an entry from a hash table, then prints out the remaing
contents of the table to the console:
. . .
VoidT EnumFuncString();
HashTableT *mytable;
F_HashRemove(mytable, (PtrT)"A");
F_HashEnumerate(mytable, EnumFuncString);
. . .
IntT EnumFuncString(PtrT key, GenericT datum)
{
myDataT *data = (myDataT *) datum;
F_Printf(NULL, "Type: %s, count %d.\n",
data->type, data->count
return True;
}
. . .
F_HashR eportOnD a ta()
F_HashReportOnData() returns the number of hash entries with a specified datum.
It prints the string information of the first matched datum to info by using the
stringifyMe function specified by the call to F_HashCreate(). If more than one
entry matching the specified datum is found, the string " +" is appended to the end of
info.
FDK Programmer’s Reference 579
3
DK Function Reference
F_HashReportOnData()
Synopsis
#include "fdetypes.h"
#include "fhash.h"
. . .
IntT F_HashReportOnData(HashT table,
StringT info,
GenericT datum);
Arguments
table
The hash table
info
A pointer to memory that the stringifyMe function can
write to
datum
The datum to search for
Returns
The number of entries in the hash table with the specified datum.
Example
The following code reports the number of entries with datum of 1:
. . .
UCharT info[256];
IntT num_entries;
HashTableT *ht =
F_HashCreate("color", 0, KEY_IS_STRING, 0, 0, 0, 0);
F_HashSet(ht, (StringT) "red", 1);
F_HashSet(ht, (StringT) "green", 2);
F_HashSet(ht, (StringT) "blue", 3);
F_HashSet(ht, (StringT) "rojo", 1);
F_HashSet(ht, (StringT) "rouge", 1);
num_entries = F_HashReportOnData(ht, info, 1);
F_Printf(0, "Number of entries found with datum %d: %d\n",
1, num_entries);
F_HashDestroy(ht);
. . .
580
FDK Programmer’s Reference
F_HashSet()
...
DK Function Reference
F_HashSet()
Adds the specified data to the specified hash table, giving it the specified key. This
function makes its own copy of the key, but it does not make a copy of the data.
..............................................................................
IMPORTANT: The routine that copies the key only copies strings or the amount of bytes
specified for keyLen in F_HashCreate(). If you use pointers in your keys, F_HashSet()
will only copy the pointer, not the pointer data.
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fhash.h"
. . .
ErrorT F_HashSet(HashT table,
PtrT key,
GenericT datum);
Arguments
table
The hash table
key
The key of the entry to set
datum
The entry’s datum
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
Example
See “F_HashCreate()” on page 572.
F_IsVa lidUTF8()
Determines whether the specified byte sequence is a valid UTF-8 string
Synopsis
#include "fencode.h"
. . .
BoolT F_IsValidUTF8 (ConStringT s);
FDK Programmer’s Reference 581
3
DK Function Reference
F_LanguageNumber()
Arguments
The string to check
s
Returns
A nonzero value if the byte sequence is a valid UTF-8 string, or 0 if it isn’t
Example
The following code prints First is valid, Second is invalid
#include "fencode.h"
. . .
StringT first = "\x41\xE2\x80\x93\x42";
StringT second = "\x41\xE2\x80";
F_FdeInitFontEncs((ConStringT)"UTF-8");
if (F_IsValidUTF8(first))
F_Printf(NULL,"First is valid");
if (!F_IsValidUTF8(first))
F_Printf(NULL,"Second is invalid");
...
F_LanguageNumber()
F_LanguageNumber() returns the Frame API number constant that corresponds to a
language string, such as usenglish or deutsch.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_LanguageNumber(ConStringT langName);
Arguments
langName
The language string for which to get a constant
Returns
The number constant that corresponds to the specified language string.
582
FDK Programmer’s Reference
F_LanguageNumber()
...
DK Function Reference
The following table lists the API language strings and the corresponding constants
returned by F_LanguageNumber().
Language string
API language constant
usenglish
FV_LANG_ENGLISH
ukenglish
FV_LANG_BRITISH
deutsch
FV_LANG_GERMAN
swissgerman
FV_LANG_SWISS_GERMAN
francais
FV_LANG_FRENCH
canadianfrench
FV_LANG_CANADIAN_FRENCH
espanol
FV_LANG_SPANISH
catalan
FV_LANG_CATALAN
italiano
FV_LANG_ITALIAN
portuguese
FV_LANG_PORTUGUESE
brasil
FV_LANG_BRAZILIAN
danish
FV_LANG_DANISH
dutch
FV_LANG_DUTCH
norwegian
FV_LANG_NORWEGIAN
nynorsk
FV_LANG_NYNORSK
finnish
FV_LANG_FINNISH
svenska
FV_LANG_SWEDISH
japanese
FV_LANG_JAPANESE
traditionalchinese
FV_LANG_TRADITIONAL_CHINESE
simplifiedchinese
FV_LANG_SIMPLIFIED_CHINESE
korean
FV_LANG_KOREAN
FDK Programmer’s Reference 583
3
DK Function Reference
F_LanguageString()
Example
The following code prints The language is U.K. English.
. . .
if(FV_LANG_BRITISH == F_LanguageNumber("ukenglish"))
F_Printf(NULL, "The language is U.K. English.");
. . .
F_LanguageString()
F_LanguageString() returns the language string specified by a Frame API
constant, such as FV_LANG_ENGLISH or FV_LANG_GERMAN. For a list of the
language strings and the corresponding constants, see “F_LanguageNumber()” on
page 582.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
ConStringT F_LanguageString(IntT langConstant);
Arguments
langConstant
The constant for which to get a language string
Returns
The language string specified by the constant. F_LanguageString() returns NULL
if langConstant is not one of the API constants that specify a language. Do not free
the returned string when you are done with it.
Example
The following code prints the string usenglish:
. . .
ConStringT langString;
langString = F_LanguageString(FV_LANG_ENGLISH);
F_Printf(NULL, "%s\n", langString);
. . .
584
FDK Programmer’s Reference
F_LockHandle()
...
DK Function Reference
F_LockHandle()
F_LockHandle() locks the memory associated with a specified handle so that it can’t
be relocated. F_LockHandle() returns the memory address of the handle’s block of
memory so that you can access it.
AddrT is a super type of PtrT. You should not cast it to PtrT. However, you can cast
PtrT to AddrT. The AddrT type is provided primarily for very large memory blocks
on Windows platforms. Accessing AddrT is slower than accessing PtrT on
Windows platforms.
After you have locked a handle, you can’t use F_FreeHandle() or
F_ReallocHandle() on the handle.
F_LockHandle() increases the lock count.
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
AddrT F_LockHandle(HandleT handle);
Arguments
handle
The handle to lock
Returns
The memory address of the data block of the handle if it succeeds, or NULL if fails.
Example
The following code locks a handle:
. . .
HandleT hndl = NULL;
if (F_LockHandle(hndl) == NULL)
F_Printf(NULL, "Couldn't lock handle.\n");
. . .
See also
“F_AllocHandle()” on page 62 and “F_UnlockHandle()” on page 721.
FDK Programmer’s Reference 585
3
3
FDK Function Reference
F_MakeDir()
FDK Function Reference
F_MakeDir()
F_MakeDir() creates a directory specified by a filepath. If the permission to create a
directory is denied, F_MakeDir() fails. If the filepath specifies an existing file or
directory, its parent directory is not writable, or if its ancestor directories do not exist,
F_MakeDir() fails.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. .
ErrorT F_MakeDir(FilePathT *filepath);
Arguments
filepath
The filepath of the directory to create
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
Example
The following code creates a directory named adir in the tmp directory:
. . .
FilePathT *path;
path = F_PathNameToFilePath((StringT)"<r><c>tmp<c>adir",
NULL, FDIPath);
if(F_MakeDir(path)!= FdeSuccess)
{
F_Printf(NULL, "Couldn't create directory.\n");
return;
}
. . .
F_MetricApproxEqual()
F_MetricApproxEqual() compares two metric numbers.
586
FDK Programmer’s Reference
F_MetricConstrainAngle()
...
FDK Function Reference
Synopsis
#include "fdetypes.h"
#include "fmetrics.h"
. . .
BoolT F_MetricApproxEqual(MetricT x,
MetricT y);
Arguments
x
A metric number to compare with y
y
A metric number to compare with x
Returns
True if the difference of x and y is less than the predefined small value
FM_EPSILON in the FrameMaker product.
Example
The following code gets the width of the first selected object in the current document. If
its width is approximately equal to one inch, it prints the string The width is
approximately one inch.
. . .
#define IN ((MetricT) 65536*72)
F_ObjHandleT docId, objId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
objId = F_ApiGetId(FV_SessionId, docId,
FP_FirstSelectedGraphicInDoc);
if(F_MetricApproxEqual(F_ApiGetMetric(docId, objId, FP_Width),
IN))
F_Printf(NULL, "The width is approximately one inch\n");
. . .
F_MetricConstrainAngle()
F_MetricConstrainAngle() constrains a specified angle to a specified range of
degrees.
FDK Programmer’s Reference 587
3
FDK Function Reference
F_MetricConstrainAngle()
Synopsis
#include "fdetypes.h"
#include "fmetrics.h"
. . .
VoidT F_MetricConstrainAngle(AngleT *anglep,
AngleT lbound);
Arguments
anglep
The address of the angle to constrain.
lbound
The lower bound of the range of degrees to which to constrain the angle.
F_MetricConstrainAngle() constrains the angle specified by
anglep between lbound and lbound+360 degrees.
The AngleT type is the same as MetricT.
Returns
VoidT.
Example
The following code constrains an angle of 800 degrees. It prints the string 440.00.
. . .
#define DEG (AngleT) 65536
AngleT angle = 800*DEG;
F_MetricConstrainAngle(&angle, 180*DEG);
F_Printf(NULL, "%2.2f\n", F_MetricToFloat((MetricT) angle));
. . .
588
FDK Programmer’s Reference
F_MetricDiv()
...
FDK Function Reference
F_MetricDiv()
F_MetricDiv() divides metric numbers.
Synopsis
#include "fdetypes.h"
#include "fmetrics.h"
. . .
MetricT F_MetricDiv(MetricT x,
MetricT y);
Arguments
x
The dividend
y
The divisor
Returns
The quotient of the specified numbers.
Example
The following code prints the string 0x20000:
. . .
#define PTS (MetricT) 655362F_Printf(NULL, "0x%x\n",
F_MetricDiv(4*PTS, 2*PTS));
. . .
F_MetricFloat()
F_MetricFloat() converts a real number to a metric number.
Synopsis
#include "fdetypes.h"
#include "fmetrics.h"
. . .
MetricT F_MetricFloat(PRealT f);
FDK Programmer’s Reference 589
3
FDK Function Reference
F_MetricFractMul()
Arguments
f
The real number to convert
Returns
The metric number.
Example
The following code prints the string 0x10006:
. . .
F_Printf(NULL, "0x%x\n", F_MetricFloat((PRealT)1.0001));
. . .
F_MetricFractMul()
F_MetricFractMul() multiplies the metric number x by n/d, where n is a
nonnegative and d is a positive integer. F_MetricFractMul() provides greater
accuracy than F_MetricMul() when you are multiplying fractional numbers.
Synopsis
#include "fdetypes.h"
#include "fmetrics.h"
. . .
MetricT F_MetricFractMul(MetricT x,
IntT n,
IntT d);
Arguments
x
The metric number to multiply
n
The numerator of the fraction to multiply by x
d
The denominator of the fraction to multiply by x
Returns
The product of x multiplied by n/d.
590
FDK Programmer’s Reference
F_MetricMake()
...
FDK Function Reference
Example
The following code turns on the view grid of the active document and sets the grid units
to .25 inches:
. . .
#define IN ((MetricT) 65536*72)
F_ObjHandleT docId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
F_ApiSetInt(FV_SessionId, docId, FP_ViewGrid, True);
F_ApiSetMetric(FV_SessionId, docId, FP_ViewGridUnits,
F_MetricFractMul(IN, 1, 4));
. . .
F_MetricMake()
F_MetricMake() constructs a metric number from a fraction.
Synopsis
#include "fdetypes.h"
#include "fmetrics.h"
. . .
MetricT F_MetricMake(IntT numerator,
IntT denominator);
Arguments
numerator
The fraction’s numerator.
denominator
The fraction’s denominator. If it is 0, the FDE assert fails.
Returns
The metric number constructed from the two specified numbers.
Example
The following code sets the zoom of the current document to 125%:
. . .
F_ObjHandleT docId;
docId = F_ApiGetId(0, FV_SessionId, FP_ActiveDoc);
F_ApiSetMetric(FV_SessionId, docId, FP_Zoom,
F_MetricMake(5, 4));
. . .
FDK Programmer’s Reference 591
3
FDK Function Reference
F_MetricMul()
F_MetricMul()
F_MetricMul() multiplies the metric numbers x and y.
Synopsis
#include "fdetypes.h"
#include "fmetrics.h"
. . .
MetricT F_MetricMul(MetricT x,
MetricT y);
Arguments
x
The first metric number
y
The second metric number
Returns
The result of the two multiplied numbers.
Example
The following code prints the string 0x60000:
. . .
#define PTS (MetricT) 65536
F_Printf(NULL, "0x%x\n", F_MetricMul(3*PTS, 2*PTS));
. . .
F_MetricNormalizeAngle()
F_MetricNormalizeAngle() normalizes a specified angle between 0 and 360
degrees.
Synopsis
#include "fdetypes.h"
#include "fmetrics.h"
. . .
VoidT F_MetricNormalizeAngle(AngleT *anglep);
592
FDK Programmer’s Reference
F_MetricNormalizeAngle()
...
FDK Function Reference
Arguments
anglep
The address of the angle to normalize
Returns
VoidT.
Example
The following code normalizes an angle of 800 degrees. It prints the string 80.00.
. . .
#define DEG (AngleT) 65536
AngleT angle = 800*DEG;
F_MetricNormalizeAngle(&angle);
F_Printf(NULL, "%2.2f\n", F_MetricToFloat((MetricT) angle));
. . .
FDK Programmer’s Reference 593
3
FDK Function Reference
F_MetricSqrt()
F_MetricSqrt()
F_MetricSqrt() computes the square root of a metric number.
Synopsis
#include "fdetypes.h"
#include "fmetrics.h"
. . .
MetricT F_MetricSqrt(MetricT x);
Arguments
x
The metric number for which to compute the square root
Returns
The square root of the specified number.
Example
The following code prints the string 0x20000:
. . .
#define PTS (MetricT) 65536
F_Printf(NULL, "0x%x\n", F_MetricSqrt(4*PTS));
. . .
F_MetricSquare()
F_MetricSquare() computes the square of a metric number.
F_MetricSquare() returns a negative number if an overflow error occurs.
Synopsis
#include "fdetypes.h"
#include "fmetrics.h"
. . .
MetricT F_MetricSquare(MetricT x);
594
FDK Programmer’s Reference
F_MetricToFloat()
...
FDK Function Reference
Arguments
x
The metric number to square
Returns
The square of the specified number.
Example
The following code prints the string 0x40000:
. . .
#define PTS (MetricT) 65536
F_Printf(NULL, "0x%x\n", F_MetricSquare(2*PTS));
. . .
F_MetricToFloat()
F_MetricToFloat() converts a metric number to a real number.
Synopsis
#include "fdetypes.h"
#include "fmetrics.h"
. . .
PRealT F_MetricToFloat(MetricT m);
Arguments
m
The metric number to convert
Returns
The real number corresponding to the specified metric number.
Example
The following code prints the string 3.0000:
. . .
#define PTS (MetricT) 65536
F_Printf(NULL, "%4.4f\n", F_MetricToFloat(3*PTS));
. . .
FDK Programmer’s Reference 595
3
FDK Function Reference
F_MifBegin()
F_MifBegin()
F_MifBegin() indents and starts a new MIF statement, and then automatically
increases the indent level.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
VoidT F_MifBegin(StringT text);
Arguments
text
The MIF statement to write to the MIF channel
Returns
VoidT.
Example
The following code:
. . .
F_MifSetIndent(0);
F_MifBegin("ColorCatalog");
F_MifBegin("Color");
F_MifBegin("ColorTag");
F_MifTextString((StringT)"Black");
F_MifEnd("ColorTag");
F_MifEnd("Color");
F_MifEnd("ColorCatalog");
. . .
generates the following output to the MIF channel:
<ColorCatalog
<Color
<ColorTag `Black' >
> # end of Color
> # end of ColorCatalog
F_MifComment()
F_MifComment() writes a comment string to the MIF write channel.
596
FDK Programmer’s Reference
F_MifDecimal()
...
FDK Function Reference
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
VoidT F_MifComment(StringT s);
Arguments
s
The comment string to write to the MIF channel
Returns
VoidT.
Example
The following code:
. . .
F_MifSetIndent(0);
F_MifMIFFile(5.0);
F_MifComment((StringT) "Generated by FDK Client");
. . .
generates the following output to the MIF channel:
<MIFFile 5.0> # Generated by FDK Client
F_MifDecimal()
F_MifDecimal() writes a real number with n digits after the decimal point.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
VoidT F_MifDecimal(PRealT d,
IntT n,
MifUnitT unit);
FDK Programmer’s Reference 597
3
FDK Function Reference
F_MifEnd()
Arguments
s
The real number to write to the MIF channel.
n
The number of digits after the decimal point to be printed.
unit
The MIF unit. See the table below.
The type MifUnitT can have the following values.
MifUnitT value
Measurement unit
MIFUnitIn
Inches
MIFUnitCm
Centimeters
MIFUnitMm
Millimeters
MIFUnitPica
Picas
MIFUnitPt
Points
MIFUnitDd
Didots
MIFUnitCc
Ciceros
MIFUnitDef
Default unit
Returns
VoidT.
Example
The following code:
. . .
F_MifDecimal(3.1415, 3, MIFUnitCm);
. . .
generates the following output to the MIF channel:
3.142 cm
F_MifEnd()
F_MifEnd() indents and finishes a MIF statement, and then automatically decreases
the indent level. If the MIF statement has substatements, the function outputs the
comment string # end of statement, where statement is the name of the
substatement.
598
FDK Programmer’s Reference
F_MifEnd()
...
FDK Function Reference
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
VoidT F_MifEnd(StringT text);
Arguments
text
The text to write to the MIF channel
Returns
VoidT.
Example
See “F_MifBegin()” on page 596.
FDK Programmer’s Reference 599
3
FDK Function Reference
F_MifGetIndent()
F_MifGetIndent()
F_MifGetIndent() returns the current indent level of the MIF write channel.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
IntT F_MifGetIndent(VoidT);
Arguments
None.
Returns
VoidT.
Example
The following code writes the string Indent is 2 levels:
. . .
F_MifSetIndent(2);
F_Printf(NULL, "Indent is %d levels\n", F_MifGetIndent());
. . .
F_MifIndent()
F_MifIndent() indents the output channel according to the indent level.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
VoidT F_MifIndent(VoidT);
Arguments
None.
Returns
VoidT.
600
FDK Programmer’s Reference
F_MifIndentDec()
...
FDK Function Reference
Example
The following code indents the output channel according to the current indent level:
. . .
F_MifIndent(VoidT);
. . .
F_MifIndentDec()
F_MifIndentDec() decreases the indent level.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
IntT F_MifIndentDec(VoidT);
Arguments
None.
Returns
VoidT.
Example
The following code:
. . .
F_MifBegin("Pgf");
F_MifBegin("PgfFont");
F_MifIndentDec();
F_MifBegin("FSize");
F_MifDecimal(12.0, 1, MIFUnitPt);
F_MifEnd("FSize");
F_MifEnd("PgfFont");
F_MifEnd("Pgf");
. . .
generates the following output to the MIF channel:
<Pgf
<PgfFont
<FSize 12.0 pt >
> # end of PgfFont
> # end of Pgf
FDK Programmer’s Reference 601
3
FDK Function Reference
F_MifIndentInc()
F_MifIndentInc()
F_MifIndentInc() increases the indent level.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
IntT F_MifIndentInc(VoidT);
Arguments
None.
Returns
VoidT.
Example
The following code:
. . .
F_MifBegin("Pgf");
F_MifIndentInc();
F_MifBegin("PgfSpBefore");
F_MifDecimal(0.0, 1, MIFUnitPt);
F_MifEnd("PgfSpBefore");
F_MifEnd("Pgf");
. . .
generates the following output to the MIF channel:
<Pgf
<PgfSpBefore 0.0 pt >
> # end of Pgf
F_MifInteger()
F_MifInteger() writes an integer to the MIF write channel.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
VoidT F_MifInteger(IntT n);
602
FDK Programmer’s Reference
F_MifNewLine()
...
FDK Function Reference
Arguments
n
The integer to write to the MIF channel
Returns
VoidT.
Example
The following code:
. . .
F_MifInteger(24);
. . .
generates the following output to the MIF channel:
24
F_MifNewLine()
F_MifNewLine() writes a new line to the MIF write channel.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
VoidT F_MifNewLine(VoidT);
Arguments
None.
Returns
VoidT.
FDK Programmer’s Reference 603
3
FDK Function Reference
F_MifSetIndent()
Example
The following code:
. . .
F_MifSetIndent(0);
F_MifMIFFile(5.0);
F_MifNewLine();
F_MifComment((StringT)"Options");
F_MifNewLine();
F_MifComment((StringT)"
Paragraph Tags");
. . .
generates the following output to the MIF channel:
<MIFFile 5.0 >
# Options
#
Paragraph Tags
F_MifSetIndent()
F_MifSetIndent() sets the indent level of the MIF write channel.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
VoidT F_MifSetIndent(IntT indent);
Arguments
indent
The indent level to set
Returns
VoidT.
Example
The following code:
. . .
F_MifMIFFile(5.0);
F_MifSetIndent(3);
F_MifBegin("ColorCatalog");
F_MifEnd("ColorCatalog");
. . .
604
FDK Programmer’s Reference
F_MifSetOutputChannel()
...
FDK Function Reference
generates the following output to the MIF channel:
<MIFFile 5.00 >
<ColorCatalog
>
F_MifSetOutputChannel()
F_MifSetOutputChannel() sets a channel to receive MIF output.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
ChannelT F_MifSetOutputChannel(ChannelT chan);
Arguments
chan
The channel to set as the MIF output channel
Returns
The channel previously set as the MIF output channel.
Example
The following code:
. . .
FilePathT *path;
ChannelT chan;
path = F_PathNameToFilePath((StringT)"my.mif",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"w")) == NULL) return;
F_MifSetOutputChannel(chan);
F_MifSetIndent(0);
F_MifMIFFile(5.0);
F_ChannelClose(chan);
. . .
sets the MIF output channel to the file my.mif in the FrameMaker product directory.
It generates the following output to the file:
<MIFFile 5.00 >
FDK Programmer’s Reference 605
3
FDK Function Reference
F_MifSpace()
F_MifSpace()
F_MifSpace() writes a blank space to the MIF output channel.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
VoidT F_MifSpace(VoidT);
Arguments
None.
Returns
VoidT.
Example
The following code:
. . .
F_MifText((StringT)"Some text");
F_MifSpace();
F_MifText((StringT)"More text");
. . .
generates the following output to the MIF channel:
Some text More text
F_MifTab()
F_MifTab() writes a tab to the MIF channel.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
VoidT F_MifTab(VoidT);
Arguments
None.
606
FDK Programmer’s Reference
F_MifText()
...
FDK Function Reference
Returns
VoidT.
Example
The following code:
. . .
F_MifText((StringT)"Some text");
F_MifTab();
F_MifText((StringT)"More text");
. . .
generates the following output to the MIF channel:
Some Text
More text
F_MifText()
F_MifText() writes a simple text string to the MIF output channel.
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
VoidT F_MifText(StringT s);
Arguments
s
The text string to write
Returns
VoidT.
Example
The following code:
. . .
F_MifText((StringT)"Some text");
. . .
generates the following output to the MIF channel:
Some text
FDK Programmer’s Reference 607
3
FDK Function Reference
F_MifTextString()
F_MifTextString()
F_MifTextString() writes a text string enclosed in single quotes (`') to the MIF
channel.
..............................................................................
This function only works with characters that use the FrameRoman
encoding. This is important if your document includes Asian text. For a function to
write double-byte characters out to MIF, see “F_MifText()” on page 607
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fmifstmt.h"
. . .
VoidT F_MifTextString(StringT s);
Arguments
s
The text string to write
Returns
VoidT.
Example
The following code:
. . .
F_MifTextString((StringT)"This is a string");
. . .
generates the following output to the MIF channel:
`This is a string'
Simple MIF library
Simple MIF library functions are useful for writing MIF statements.
The simple MIF library functions write directly to the MIF channel. To use them, you
must first open a channel with F_ChannelOpen() and then set it as the MIF channel
608
FDK Programmer’s Reference
Simple MIF library
...
FDK Function Reference
with F_MifSetOutputChannel(). For more information on using MIF channels,
see “The MIF library” in the FDK Programmer’s Guide.
#include "fmifstmt.h"
. . .
VoidT F_MifMIFFile(PRealT version)
VoidT F_MifString(StringT string);
VoidT F_MifDMargins(PRealT l,
PRealT t,
PRealT r,
PRealT b,
MifUnitT unit);
VoidT F_MifDColumns(IntT DColumns);
VoidT F_MifDColumnGap(PRealT DColumnGap,
MifUnitT unit);
VoidT F_MifDPageSize(PRealT w,
PRealT h,
MifUnitT unit);
VoidT F_MifDStartPage(IntT DStartPage);
VoidT F_MifDTwoSides(BoolT DTwoSides);
VoidT F_MifDParity(IntT DParity);
VoidT F_MifDPageNumStyle(IntT DPageNumStyle);
VoidT F_MifDFNotePgfTag(StringT DFNotePgfTag);
VoidT F_MifDFNoteMaxH(PRealT DFNoteMaxH,
MifUnitT unit);
VoidT F_MifDFNoteNumStyle(IntT DFNoteNumStyle);
VoidT F_MifDFNoteLabels(StringT DFNoteLabels);
VoidT F_MifDFNotesNumbering(IntT DFNotesNumbering);
VoidT F_MifDFNoteNumberPos(IntT DFNoteNumberPos);
VoidT F_MifDPageRounding(IntT DPageRounding);
VoidT F_MifDLinebreakChars(StringT DLinebreakChars);
VoidT F_MifPgfTag(StringT tagStyleName);
VoidT F_MifPgfUseNextTag(BoolT pgfUseNextTag);
VoidT F_MifPgfNextTag(StringT pgfNextTag);
FDK Programmer’s Reference 609
3
FDK Function Reference
Simple MIF library
VoidT F_MifPgfLIndent(PRealT pgfLIndent,
MifUnitT unit);
VoidT F_MifPgfFIndent(PRealT pgfFIndent,
MifUnitT unit);
VoidT F_MifPgfRIndent(PRealT pgfRIndent,
MifUnitT unit);
VoidT F_MifPgfAlignment(IntT pgfAlignment);
VoidT F_MifPgfTopSeparator(StringT pgfTopSeparator);
VoidT F_MifPgfBotSeparator(StringT pgfBotSeparator);
VoidT F_MifPgfPlacement(IntT pgfPlacement);
VoidT F_MifPgfSpBefore(PRealT pgfSpBefore,
MifUnitT unit);
VoidT F_MifPgfSpAfter(PRealT pgfSpAfter,
MifUnitT unit);
VoidT F_MifPgfWithNext(BoolT pgfWithNext);
VoidT F_MifPgfBlockSize(IntT pgfBlockSize);
VoidT F_MifPgfAutoNum(BoolT pgfAutoNum);
VoidT F_MifPgfNumberFont(StringT fTag);
VoidT F_MifPgfNumFormat(StringT pgfNumFormat);
VoidT F_MifPgfNumString(StringT pgfNumString);
VoidT F_MifPgfLineSpacing(IntT pgfLineSpacing);
VoidT F_MifPgfLeading(PRealT pgfLeading,
MifUnitT unit);
VoidT F_MifPgfNumTabs(IntT pgfNumTabs);
VoidT F_MifTSX(PRealT tsx,
MifUnitT unit);
VoidT F_MifTSType(IntT tsType);
VoidT F_MifTSLeaderStr(StringT tsLeader);
VoidT F_MifTSDecimalChar(IntT decimalChar);
VoidT F_MifPgfHyphenate(BoolT pgfHyphenate);
VoidT F_MifHyphenMaxLines(IntT hyphenMaxLines);
VoidT F_MifHyphenMinPrefix(IntT hyphenMinPrefix);
610
FDK Programmer’s Reference
Simple MIF library
...
FDK Function Reference
VoidT F_MifHyphenMinSuffix(IntT hyphenMinSuffix);
VoidT F_MifHyphenMinWord(IntT hyphenMinWord);
VoidT F_MifHyphenQuality(StringT hyphenQuality);
VoidT F_MifPgfLetterSpace(BoolT pgfLetterSpace);
VoidT F_MifPgfMinWordSpace(IntT pgfMinWordSpace);
VoidT F_MifPgfOptWordSpace(IntT pgfOptWordSpace);
VoidT F_MifPgfMaxWordSpace(IntT pgfMaxWordSpace);
VoidT F_MifPgfLanguage(IntT pgfLanguage);
VoidT F_MifPgfCellAlignment(IntT valign);
VoidT F_MifPgfCellMargins(PRealT b,
PRealT t,
PRealT r,
PRealT b,
MifUnitT unit);
VoidT F_MifFTag(StringT fTag);
VoidT F_MifFFamily(StringT fFamily);
VoidT F_MifFVar(StringT fVar);
VoidT F_MifFWeight(StringT fWeight);
VoidT F_MifFAngle(StringT fAngle);
VoidT F_MifFSize(PRealT fSize,
MifUnitT unit);
VoidT F_MifFUnderline(BoolT fUnderline);
VoidT F_MifFStrike(BoolT fstrike);
VoidT F_MifFSupScript(BoolT fSupScript);
VoidT F_MifFSubScript(BoolT fSubScript);
VoidT F_MifFSmallCaps(BoolT fsmallcaps);
VoidT F_MifFCaps(BoolT fcaps);
VoidT F_MifFChangeBar(BoolT fChangeBar);
VoidT F_MifFOutline(BoolT foutline);
VoidT F_MifFShadow(BoolT fshadow);
VoidT F_MifFPairKern(BoolT fPairKern);
FDK Programmer’s Reference
611
3
FDK Function Reference
Simple MIF library
VoidT F_MifFPlain(BoolT fPlain);
VoidT F_MifFBold(BoolT fbold);
VoidT F_MifFItalic(BoolT fitalic);
VoidT F_MifFDX(PRealT fDX,
MifUnitT unit);
VoidT F_MifFDY(PRealT fDY,
MifUnitT unit);
VoidT F_MifFDW(PRealT fDW,
MifUnitT unit);
VoidT F_MifFLocked(BoolT fLocked);
VoidT F_MifFSeparation(IntT fSeparation);
VoidT F_MifFlipLR(BoolT flipLR);
VoidT F_MifPen(IntT pen);
VoidT F_MifFill(IntT fill);
VoidT F_MifPenWidth(PRealT penWidth);
VoidT F_MifSeparation(IntT layer);
VoidT F_MifAngle(IntT angle);
VoidT F_MifBRect(PRealT l,
PRealT t,
PRealT w,
PRealT h,
MifUnitT unit);
VoidT F_MifBeginTextFlow(StringT flowTag,
BoolT autoConnect);
VoidT F_MifEndTextFlow(VoidT);
VoidT F_MifTextRectID(IntT textRectID);
VoidT F_MifID(IntT id);
VoidT F_MifPageSize(PRealT w,
PRealT h,
MifUnitT unit);
VoidT F_MifPageType(IntT pageType);
VoidT F_MifPageTag(StringT pageTag);
VoidT F_MifPageOrientation(IntT pageOrientation);
612
FDK Programmer’s Reference
F_PathNameToFilePath()
...
FDK Function Reference
VoidT F_MifPageNum(IntT pageNum);
VoidT F_MifPageBackground(StringT pageTag);
VoidT F_MifTag(StringT tag);
VoidT F_MifFrameType(IntT frameType);
VoidT F_MifHLine(IntT pen,
PRealT penWidth,
PRealT x,
PRealT y,
PRealT length);
VoidT F_MifNumPoints(IntT n);
VoidT F_MifPoint(PRealT x,
PRealT y,
MifUnitT unit);
VoidT F_MifTLOrigin(PRealT x,
PRealT y,
MifUnitT unit);
VoidT F_MifTLAlignment(IntT align);
VoidT F_MifChar(IntT text);
VoidT F_MifVariable(StringT text);
VoidT F_MifUnits(IntT u);
F_PathNameToFilePath()
F_PathNameToFilePath() constructs a platform-independent FilePathT path
from a platform-specific pathname.
This function also supports HTTP paths.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
FilePathT *F_PathNameToFilePath(StringT pathname,
FilePathT *anchor,
PathEnumT platform);
FDK Programmer’s Reference 613
3
FDK Function Reference
F_PathNameToFilePath()
Arguments
pathname
The pathname to convert to a filepath.
anchor
An anchor for the filepath. If pathname specifies a relative pathname,
F_PathNameToFilePath() constructs the path relative to the anchor
specified by anchor. If pathname specifies an absolute pathname,
F_PathNameToFilePath() ignores the anchor specified by anchor.
platform
The platform for the pathname. To make your client portable and avoid
errors, specify FDefaultPath or FDIPath.
If anchor is NULL, F_PathNameToFilePath() constructs the path relative to the
current directory.
Returns
The platform-independent FilePathT path based on the path specified by
pathname, or NULL if the path specified by pathname is invalid or inconsistent
with the specified platform.
Example
The following code creates filepaths from pathnames:
. . .
FilePathT *anchor, *path1, *path2, *path3, *path4;
path1 = F_PathNameToFilePath("<c>my.txt",
NULL, FDIPath);
path2 = F_PathNameToFilePath("my.txt",
NULL, FDefaultPath);
anchor = F_PathNameToFilePath("<r><c>tmp",
NULL, FDIPath);
path3 = F_PathNameToFilePath("<r><c>tmp<c>tmp.txt",
NULL, FDIPath);
path4 = F_PathNameToFilePath("tmp.txt",
anchor, FDefaultPath);
. . .
F_FilePathFree(path1);
F_FilePathFree(path2);
F_FilePathFree(path3);
F_FilePathFree(path4);
F_FilePathFree(anchor);
. . .
614
FDK Programmer’s Reference
F_PathNameType()
...
FDK Function Reference
path1 and path2 specify a file named my.txt in the FrameMaker product
directory. path3 and path4 specify a file named tmp.txt in the tmp directory.
F_PathNameType()
F_PathNameType() uses a set of heuristics to guess the path type of the path
specified by pathname. It returns the most likely path type. This path type may not
always be the correct one because of ambiguities in pathnames among the different
platforms.
NOTE: This function returns FDosPath type for HTTP paths. The API
F_PathNameType() logically translates to the API F_PathNameValid() that
returns FDosPath, if the path is valid.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
PathEnumT F_PathNameType(StringT pathname);
Arguments
pathname
The pathname for which to guess the path type
Returns
A constant specifying the pathname type (FDosPath).
Example
The following code returns the pathname types for various pathnames:
. . .
PathEnumT pType; /* FDosPath, FUnixPath, or FDIPath */
pType = F_PathNameType("c:\\bin"); /* Returns FDosPath. */
pType = F_PathNameType("/tmp"); /* Returns FUnixPath. */
pType = F_PathNameType("<c>file"); /* Returns FDIPath. */
. . .
F_Printf()
F_Printf() prints formatted output to the Frame console .
FDK Programmer’s Reference 615
3
FDK Function Reference
F_Printf()
F_Printf() is similar to fprintf(), except it doesn’t support the p conversion
character. All the arguments that you pass to F_Printf() must be FDE types and
should be typecast.
This function can accept the %C escape sequence. In Compatibility Mode, this ignores
the corresponding parameter. In Unicode Mode, the first UTF-8 character in the
corresponding parameter (which must be ConStringT or UCharT *) is printed.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
IntT F_Printf(ChannelT channel,
NativeCharT *format,
... );
Arguments
channel
The channel to which to print the output. To print to the the Frame console
specify NULL.
format
The formatted string to print.
You can precede the conversion character (d, o, x, or u) with l or h. To specify
IntT, precede the conversion character with l. To specify ShortT, precede it with h.
By default, the conversion characters d, o, x, and u specify IntT.
..............................................................................
If you don’t typecast the arguments you pass to F_Printf(), the
output it prints may be different on different platforms.
I M P O RTA NT:
..............................................................................
Returns
The number of matched characters printed.
Examples
The following code prints 100 200 strings:
. . .
F_Printf(NULL, "%d %hd %s\n", (IntT) 100, (ShortT)200,
(StringT) "strings");
. . .
616
FDK Programmer’s Reference
F_Progress()
...
FDK Function Reference
The following code prints ४ + २ = 6
...
StringT devanagiri_four="\xE0\xA5\xAA";
StringT devanagiri_two ="\xE0\xA5\xA8";
IntT res;
F_FdeInitFontEncs((ConStringT)"UTF-8");
res = F_DigitValue(devanagiri_four)
+F_DigitValue(devanagiri_two);
F_Printf(NULL,"%C + %C is %d", devanagiri_four, devanagiri_two,
res);
...
F_Progress()
F_Progress() is a function you can use to indicate what percentage of a process has
been completed. It displays a progress indicator with a “thermometer” showing the
percentage done.
Synopsis
#include "fprogs.h"
. .
ErrorT F_Progress(IntT percent);
Arguments
percent
An integer representing a percentage; for example, 30 represents 30%.
Returns
FeSuccess if it succeeds, or a nonzero value if it fails.
Example
The following code responds to a file-to-file fliter notification, and displays a progress
indicator. If the user does not cancel, then the code will go on to perform the filter
operation.
. . .
VoidT
F_ApiNotify(IntT notification, F_ObjHandleT docId,
StringT filename, IntT iparm)
{
FDK Programmer’s Reference 617
3
FDK Function Reference
F_PtrEqual()
if (notification == FA_Note_FilterFileToFile) {
F_FilterArgsT *argsp = (F_FilterArgsT *) filename;
IntT error;
F_ApiSleep(2); /* give user time to react */
error = F_Progress(10);
if (error != 0)
{
/* return the error result so FrameMaker can */
/* cancel the operation. */
F_ApiReturnValue(-1);
/* Go on to perform the filter operation, calling */
/* F_Progress() at appropriate intervals. */
. . .
F_PtrEqual()
F_PtrEqual() determines whether two blocks of memory have equal contents to a
specified number of bytes.
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
BoolT F_PtrEqual(PtrT ptr1,
PtrT ptr2,
UIntT n);
Arguments
ptr1
A pointer to a block of memory to compare
ptr2
A pointer to a block of memory to compare
n
The number of bytes of memory to compare
Returns
True if the blocks of memory have equal contents to n bytes, or False if they do
not have equal contents or one of the pointers is NULL.
618
FDK Programmer’s Reference
F_PtrEqual()
...
FDK Function Reference
Example
The following code compares two pointers:
. . .
UCharT *ptr1 = NULL, *ptr2 = NULL;
. . .
if(F_PtrEqual(ptr1, ptr2, 256))
F_Printf(NULL, "The pointers are equal to 256 chars.\n");
. . .
FDK Programmer’s Reference 619
3
FDK Function Reference
F_ReadBytes()
F_ReadBytes()
F_ReadBytes() reads a specified number of bytes from a channel to a buffer.
Synopsis
#include "fdetypes.h"
#include "fioutils.h"
. . .
IntT F_ReadBytes(PtrT ptr,
IntT numBytes,
ChannelT channel);
Arguments
ptr
A buffer to which to write the bytes
numBytes
The number of bytes to read
channel
The channel from which to read
Returns
The number of bytes read.
Example
The following code reads the first 255 bytes from a file located in the FrameMaker
product directory:
. . .
UCharT buf[256];
ChannelT chan;
FilePathT *path;
IntT count;
path = F_PathNameToFilePath((StringT)"test.txt",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"r")) == NULL)
return;
count = F_ReadBytes(buf, 255, chan);
buf[count] = '\0'; /* Add a NULL terminator. */
. . .
620
FDK Programmer’s Reference
F_ReadLongs()
...
FDK Function Reference
F_ReadLongs()
F_ReadLongs() reads a specified number of longs (four bytes) from a specified
channel to a specified buffer. It swaps bytes if you have specified a byte order with
F_SetByteOrder() or F_ResetByteOrder() and the byte order is different
from the current platform’s byte order.
Synopsis
#include "fdetypes.h"
#include "fioutils.h"
. . .
IntT F_ReadLongs(PtrT ptr,
IntT num,
ChannelT channel);
Arguments
ptr
A buffer to which to write
num
The number of longs to read
channel
The channel from which to read
Returns
The number of longs actually read.
FDK Programmer’s Reference 621
3
FDK Function Reference
F_ReadShorts()
Example
The following code reads and prints the first 256 long integers from a file located in the
default directory:
. . .
IntT buf[256];
ChannelT chan;
FilePathT *path;
IntT count, i;
path = F_PathNameToFilePath((StringT)"test.dat",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"r")) == NULL) return;
count = F_ReadLongs((PtrT)buf, 256, chan);
for(i=0; i<count; i++)
F_Printf(NULL, "%d ", buf[i]);
. . .
F_ReadShorts()
F_ReadShorts() reads a specified number of shorts (two bytes) from a specified
channel to a specified buffer. It swaps bytes if you have specified a byte order with
F_SetByteOrder() or F_ResetByteOrder() and the byte order is different
from the current platform’s byte order.
Synopsis
#include "fdetypes.h"
#include "fioutils.h"
. . .
IntT ReadShorts(PtrT ptr,
IntT n,
ChannelT channel);
622
FDK Programmer’s Reference
F_Realloc()
...
FDK Function Reference
Arguments
ptr
A buffer to which to write
n
The number of shorts to read
channel
The channel from which to read
Returns
The number of shorts actually read.
Example
The following code reads and prints the first 256 short integers from a file located in the
default directory:
. . .
ChannelT chan;
ShortT buf[256];
FilePathT *path;
IntT count, i;
path = F_PathNameToFilePath((StringT)"test.dat",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"r")) == NULL) return;
count = F_ReadShorts((PtrT)buf, 256, chan);
for(i=0; i<count; i++)
F_Printf(NULL, "%hd ", buf[i]);
. . .
F_Realloc()
F_Realloc() allocates a new block of memory and copies the contents of a specified
block of memory to it. If the memory isn’t available, F_Realloc() does not change
the original block.
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
PtrT F_Realloc(PtrT ptr,
UIntT n,
PUCharT flags);
FDK Programmer’s Reference 623
3
FDK Function Reference
F_Realloc()
Arguments
ptr
A pointer to the original block of memory
n
The number of bytes to allocate for the new block of memory
flags
Specifies whether to bail out (DSE) or return NULL (NO_DSE) if the
memory you request isn’t available
Returns
A pointer to the new block of memory, or NULL if it fails.
Example
Following are two functions to illustrate F_Realloc(). The first function uses
F_Realloc() to increase the memory allocated to a pointer. It then clears the newly
added memory space, and returns a pointer to the resulting memory. Note that it is
important to clear the newly added memory; F_Realloc() does not clear it for you.
As an illustration, the second function invokes growPointer(). It first creates and
prints a string of the characters "A - Z". After growing the pointer, it adds to the original
string, and then prints the characters "A - Za - z".
PtrT growPtr(PtrT p, UIntT addBytes, UIntT contentSize)
{
PtrT retp = NULL;
p = F_Realloc(p, contentSize+addBytes, NO_DSE);
if(!p)
return(NULL);
retp = p;
p = (UByteT *)p + contentSize;
F_ClearPtr(p, addBytes);
return(retp);
}
624
FDK Programmer’s Reference
F_ReallocHandle()
...
FDK Function Reference
VoidT testMem(VoidT) {
UCharT *ptr = NULL, *start;
UIntT i, len = 26;
ptr = F_Alloc(len + 1, NO_DSE);
if (ptr == NULL)
return;
F_ClearPtr(ptr, len);
start = ptr;
/* Make the first string of chars "A - Z" */
for(i=0; i<len ;i++) {
*ptr++ = ((UCharT)'A')+i;
}
*ptr = 0;
F_Printf(NULL, "\n%s", (StringT)start);
/* Make room for another 26 characters. */
/* Test ptr to ensure growPtr succeded. */
ptr = (UCharT *)growPtr(start, (UIntT)len, (UIntT)len+1);
if(ptr == NULL)
return;
/* Append the chars "a - z" to the string */
ptr += len;
for(i=0; i<len;i++) {
*ptr++ = ((UCharT)'a')+i;
}
*ptr = 0;
F_Printf(NULL, "\n%s", (StringT)start);
F_Free(start);
}
F_ReallocHandle()
F_ReallocHandle() allocates a new handle and a block of memory and copies the
contents of a specified block of memory to it.
FDK Programmer’s Reference 625
3
FDK Function Reference
F_ReallocHandle()
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
HandleT F_ReallocHandle(HandleT handle,
UIntT newSize,
PUCharT flags);
Arguments
handle
A handle to the original block of memory
newSize
The number of bytes to allocate for the new block of memory
flags
Specifies whether to bail out (DSE) or return NULL (NO_DSE) if the
memory you request isn’t available
Returns
A handle to the new block of memory or NULL if it fails.
Example
The following code reallocates an additional 1K of memory to a handle:
. . .
HandleT hndl = NULL;
hndl = F_AllocHandle(66000, NO_DSE);
if(hndl == NULL) return;
if(!F_ReallocHandle(hndl, F_GetHandleSize(hndl)+1024, NO_DSE))
F_Printf(NULL, "Couldn't reallocate handle.\n");
. . .
626
FDK Programmer’s Reference
F_RenameFile()
...
FDK Function Reference
F_RenameFile()
F_RenameFile() renames a specified file or directory within a file system.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
ErrorT F_RenameFile(FilePathT *filepath,
FilePathT *newfile);
Arguments
filepath
The filepath of the file or directory to rename
newfile
The new filepath
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails. If newfile specifies a
different file system than filepath, F_RenameFile() fails. It also fails if the file
or directory specified by newfile already exists, the parent directory doesn’t exist, or
permission is denied.
Example
The following code renames t1.txt to t2.txt:
. . .
FilePathT *filepath, *newfile;
filepath = F_PathNameToFilePath("<r><c>tmp<c>t1.txt",
NULL, FDIPath);
newfile = F_PathNameToFilePath("<r><c>tmp<c>t2.txt",
NULL, FDIPath);
if(F_RenameFile(filepath, newfile) != FdeSuccess)
F_Printf(NULL, "Couldn't rename file.\n");
. . .
F_ResetByteOrder()
F_ResetByteOrder() sets the byte ordering for a specified channel to big-endian.
Subsequent calls to FDE I/O functions, such as F_ReadShorts() and
F_WriteLongs(), will swap bytes if the platform is little-endian.
FDK Programmer’s Reference 627
3
FDK Function Reference
F_ResetByteOrder()
Synopsis
#include "fdetypes.h"
#include "fioutils.h"
. . .
VoidT F_ResetByteOrder(ChannelT channel);
Arguments
channel
The channel for which to set the byte order
Returns
VoidT.
Example
The following code sets a channel’s byte ordering to big-endian:
. . .
ChannelT chan;
. . .
F_ResetByteOrder(chan);
. . .
See also
“F_SetByteOrder()” on page 632.
628
FDK Programmer’s Reference
F_ResetDirHandle()
...
FDK Function Reference
F_ResetDirHandle()
F_ResetDirHandle() resets a file handle so that the next time you call
F_FilePathGetNext(), it returns the first entry in the directory.
It is illegal to call F_ResetDirHandle() if the directory specified by handle is
closed.
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
ErrorT F_ResetDirHandle(DirHandleT handle);
Arguments
handle
The handle to reset. You must specify a handle returned by
F_FilePathOpenDir().
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
Example
The following code resets the directory handle for the tmp directory.
. . .
DirHandleT handle;
FilePathT *path, *file;
IntT statusp;
path = F_PathNameToFilePath((StringT)"<r><c>tmp",
NULL, FDIPath);
handle = F_FilePathOpenDir(path, &statusp);
if(!handle) return;
file = F_FilePathGetNext(handle, &statusp);
. . .
F_ResetDirHandle(handle);
file = F_FilePathGetNext(handle, &statusp);
. . .
FDK Programmer’s Reference 629
3
FDK Function Reference
F_Scanf()
F_Scanf()
F_Scanf() reads formatted input from a specified channel. F_Scanf() is similar
to fscanf(), except it doesn’t support the p conversion character.
You can precede the conversion character (d, o, x, or u) with l or h. To specify
IntT, precede the conversion character with l. To specify ShortT, precede it with h.
By default, the conversion characters d, o, x, and u specify IntT.
..............................................................................
This function only gives consistent results across multiple platforms
when reading text in the FrameRoman encoding.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
IntT F_Scanf(ChannelT channel,
StringT format, ...);
Arguments
channel
The channel from which to read input
format
The format for the input
Returns
The number of input items successfully matched and assigned.
630
FDK Programmer’s Reference
F_SetAssert()
...
FDK Function Reference
Example
The following code reads formatted input and prints it:
. . .
IntT
i;
RealT fp;
FilePathT *path;
ChannelT chan;
F_Printf(NULL, "Enter an integer and floating-point:\n");
path = F_PathNameToFilePath((StringT)"test.txt",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"r")) == NULL) return;
F_Scanf(chan, "%d %f", &i, &fp);
F_Printf(NULL, "The numbers were: %d %f\n", i, fp);
. . .
F_SetAssert()
F_SetAssert() registers an assertion-handler function and returns the client’s
original assertion handle.
The FDK executes the assertion handler when a client calls F_Assert() and
assertion failure occurs. After your assertion-handler function returns, the FDE’s
assertion handler is called to clean up the system and exit the client properly. It is illegal
to call abort() or exit() from the assertion handler.
Synopsis
#include "fdetypes.h"
#include "fassert.h"
. . .
ProcedureT F_SetAssert(ProcedureT myHandler);
Arguments
myHandler
The assertion handler function
The assertion function myHandler is defined as:
VoidT myHandler();
Returns
VoidT.
FDK Programmer’s Reference 631
3
FDK Function Reference
F_SetByteOrder()
Example
See “F_Assert()” on page 506.
F_SetByteOrder()
F_SetByteOrder() sets the byte ordering for a specified channel to little-endian.
Subsequent calls to FDE I/O functions, such as F_ReadShorts() and
F_WriteLongs(), will swap bytes if the platform is big-endian.
Synopsis
#include "fdetypes.h"
#include "fioutils.h"
. . .
VoidT F_SetByteOrder(ChannelT channel);
Arguments
channel
The channel for which to set byte ordering to little-endian
Returns
VoidT.
Example
The following code sets a channel’s byte ordering to little-endian so that subsequent
FDE I/O calls will swap bytes if the platform is big-endian:
. . .
ChannelT chan;
. . .
F_SetByteOrder(chan);
. . .
See also
“F_ResetByteOrder()” on page 627.
F_SetDSExit()
F_SetDSExit() sets the direct straight exit (DSE) function. The FDE calls this
function when you call an FDE memory allocation function, such as F_Alloc(), with
the flags argument set to DSE, and then memory allocation is denied.
F_SetDSExit() returns the current DSE function.
632
FDK Programmer’s Reference
F_SetICUDataDir()
...
FDK Function Reference
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
ProcedureT F_SetDSExit(ProcedureT fn);
Arguments
fn
The DSE function to set
The DSE function you specify for fn should clean up and exit the client. If the DSE
function returns, the FDE aborts the client. By default, the DSE function is NULL; the
FDE aborts the client when you call an FDE memory allocation function with flags
set to DSE and memory allocation is denied.
Returns
The previous DSE function.
Example
The following code defines and sets a DSE function, and then makes a memory
allocation call that calls the DSE function if there isn’t enough memory:
. . .
VoidT DSExitFn(); /* Declaration */
. . .
VoidT DSExitFn()
{
F_Warning((StringT) "Out of memory...Bailing out.\n");
F_ApiBailOut();
}
. . .
UCharT *ptr = NULL;
F_SetDSExit(DSExitFn);
ptr = F_Alloc(10000000, DSE);
. . .
F_SetICUDataDir()
Sets the ICU data directory for the calling process.
NOTE: This function can accept the path in ASCII only. The path must be on a local, a
mapped drive or a network path.
FDK Programmer’s Reference 633
3
FDK Function Reference
F_SetICUDataDir()
NOTE: ICU data directory is set on a per-process basis. Certain types of clients, like
synchronous DLL clients on Windows, reside in the same process space as
FrameMaker. Such clients do not need to set the ICU data directory since FrameMaker
sets the ICU data directory for its process. If such clients set the ICU data directory
incorrectly using this function, the entire FrameMaker process and other clients might
get affected. Such clients should, therefore, be careful while setting the ICU data
directory.
Synopsis
#include "fencode.h"
. . .
VoidT F_SetICUDataDir (ConStringT path);
Arguments
path
The ICU Data Directory path (absolute path, not relative)
Returns
VoidT
Example
The following code sets the ICU data directory of a client to the ICU data directory
shipped with FrameMaker:
...
UCharT icu_path[256];
StringT icu_dir="\icu_data";
StringT fminit_path = F_ApiGetString(0, FV_SessionId,
FP_FM_InitDir);
UCharT *t,*s;
s=fminit_path;
while(*s)
*t++ = *s++;
s=icu_dir;
while(*s)
*t++ = *s++;
*t=0;
F_SetICUDataDir((ConStringT) icu_path);
...
634
FDK Programmer’s Reference
F_Sprintf()
...
FDK Function Reference
F_Sprintf()
F_Sprintf() prints formatted output to a string. F_Sprintf() is similar to
sprintf(), except it doesn’t support the p conversion character.
All the arguments that you pass to F_Sprintf() must be FDE types and should be
typecast.
You can precede the conversion character (d, o, x, or u) with l or h. To specify
IntT, precede the conversion character with l. To specify ShortT, precede it with h.
By default, the conversion characters d, o, x, and u specify IntT.
..............................................................................
If you don’t typecast the arguments you pass to F_Sprintf(), the
output it generates may be different on different platforms.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
IntT F_Sprintf(StringT str,
StringT format,
...);
Arguments
str
The string to which to print the formatted output
format
The formatted string to print
Returns
The length of the printed string.
FDK Programmer’s Reference 635
3
FDK Function Reference
F_Sprintf()
Example
The following code uses F_Sprintf() to write characters to a buffer. It prints the
following string:
String: FDK. Character: c. Int: 42. Real 3.141500
. . .
UCharT buf[256];
IntT i;
i = F_Sprintf(buf,
"String: %s. ", (StringT)"FDK");
i += F_Sprintf(buf+i, "Character: %c. ", (UCharT)'c');
i += F_Sprintf(buf+i, "Int: %d. ", (IntT)42);
i += F_Sprintf(buf+i, "Real: %f.", (RealT)3.1415);
F_Printf(NULL, "%s\n", buf);
. . .
636
FDK Programmer’s Reference
F_Sscanf()
...
FDK Function Reference
F_Sscanf()
F_Sscanf() reads formatted input from a string. It is equivalent to sscanf().
You can precede the conversion character (d, o, x, or u) with l or h. To specify
IntT, precede the conversion character with l. To specify ShortT, precede it with h.
By default, the conversion characters d, o, x, and u specify IntT.
..............................................................................
This function only gives consistent results across multiple platforms
when reading text in the FrameRoman encoding.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "futils.h"
. . .
IntT F_Sscanf(StringT str,
StringT format,
...);
Arguments
str
The string from which to read input
format
The format of the input
Returns
The number of input items that successfully matched and assigned.
Example
The following code uses F_Sscanf() to read formatted input from a buffer. It prints
the string:
The numbers are: 15 and 12.300000
. . .
IntT
i;
RealT fp;
static UCharT buf[] = "15 12.3";
F_Sscanf(buf, "%d%f", &i, &fp);
F_Printf(NULL, "The numbers are: %d and %f\n", i, fp);
. . .
FDK Programmer’s Reference 637
3
FDK Function Reference
F_StrAlphaToInt()
F_StrAlphaToInt()
F_StrAlphaToInt() converts an alphanumeric string into an integer.
..............................................................................
With this function you can only use strings that contain characters in the
7-bit ASCII range.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_StrAlphaToInt(ConStringT s);
Arguments
s
The string to convert
Returns
The integer equivalent of the specified string.
Example
The following code prints the string 1000-100 = 900:
. . .
F_Printf(NULL, "1000 - 100 = %d\n",
F_StrAlphaToInt("1000") - (IntT)100);
. . .
F_StrAlphaToIntUnicode()
Converts a UTF-8 alphanumeric string into an integer
NOTE: This function won’t work for numeric characters like Ⅳ (code point 0x2163)
that aren’t in a decimal system.This function can take decimal digits from mixed
decimal systems (6 ४ , where ४ is 4 in devanagiri, is valid and interpreted as 64).
Synopsis
#include "fencode.h"
. . .
IntT F_StrAlphaToIntUnicode (ConStringT string);
638
FDK Programmer’s Reference
F_StrAlphaToIntUnicode()
...
FDK Function Reference
Arguments
s
The string to convert
Returns
The integer equivalent of the specified string
Example
The following code prints ४२ + २४ = 66
...
StringT devanagiri_four="\xE0\xA5\xAA";
StringT devanagiri_two ="\xE0\xA5\xA8";
UCharT forty2[256];
UCharT twenty4[256];
IntT res;
FontEncIdT feId = F_FdeInitFontEncs((ConStringT)"UTF-8");
F_StrTruncEnc(forty2,0,feId);
F_StrTruncEnc(twenty4,0,feId);
F_StrCpy(forty2, devanagiri_four);
F_StrCat(forty2, devanagiri_two);
F_StrCpy(twenty4, devanagiri_two);
F_StrCat(twenty4, devanagiri_four);
res = F_StrAlphaToIntUnicode(forty2) +
F_StrAlphaToIntUnicode(twenty4);
F_Printf(NULL,"%s + %s=%d", fourPoint2, twoPoint4, res);
...
FDK Programmer’s Reference 639
3
FDK Function Reference
F_StrAlphaToReal()
F_StrAlphaToReal()
F_StrAlphaToReal() converts an alphanumeric string to a PRealT.
..............................................................................
With this function you can only use strings that contain characters in the
7-bit ASCII range.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
PRealT F_StrAlphaToReal(ConStringT s);
Arguments
s
The string to convert
Returns
A PRealT corresponding to the specified string.
Example
The following code prints the string 10.05-5.05 = 5.00:
. . .
F_Printf(NULL, "10.05 - 5.05 = %2.2f\n",
F_StrAlphaToReal("10.05") - (RealT)5.05);
. . .
F_StrAlphaToRealUnicode()
Converts a UTF-8 alphanumeric string into a PRealT
NOTE: This function won’t work for numeric characters like Ⅳ (code point 0x2163)
that aren’t in a decimal system. This function can take decimal digits from mixed
decimal systems (6. ४ , where ४ is 4 in devanagiri, is valid and interpreted as 6.4).
Synopsis
#include "fencode.h"
. . .
PRealT F_StrAlphaToRealUnicode (ConStringT string);
640
FDK Programmer’s Reference
F_StrAlphaToRealUnicode()
...
FDK Function Reference
Arguments
string
The string to convert
Returns
The PRealT corresponding to the specified string
Example
The following code prints ४ . २ + २ . ४ = 6.6
...
StringT devanagiri_four="\xE0\xA5\xAA";
StringT devanagiri_two ="\xE0\xA5\xA8";
UCharT forty2[256];
UCharT twenty4[256];
PRealT res;
FontEncIdT feId = F_FdeInitFontEncs((ConStringT)"UTF-8");
F_StrTruncEnc(forty2,0,feId);
F_StrTruncEnc(twenty4,0,feId);
F_StrCpy(forty2, devanagiri_four);
F_StrCat(forty2, ".");
F_StrCat(forty2, devanagiri_two);
F_StrCpy(twenty4, devanagiri_two);
F_StrCat(twenty4, ".");
F_StrCat(twenty4, devanagiri_four);
res = F_StrAlphaToRealUnicode(forty2)+
F_StrAlphaToRealUnicode(twenty4);
F_Printf(NULL,"%s + %s=%f", fourPoint2, twoPoint4, res);
...
FDK Programmer’s Reference 641
3
FDK Function Reference
F_StrBrk()
F_StrBrk()
F_StrBrk() returns a pointer to the first occurrence in s1 of any character in s2.
..............................................................................
This function only works with characters that use the FrameRoman
encoding. This is important if your document includes Asian text.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
StringT F_StrBrk(StringT s1,
ConStringT s2);
Arguments
s1
The string to search
s2
The characters to search for
Returns
A pointer to the first occurrence in s1 of any character in s2, or NULL if none of the
characters in s2 occurs in s1.
Example
The following code prints the string Earthshaker:
. . .
StringT s1, s;
s1 = F_StrCopyString("Poseidon Earthshaker");
s = F_StrBrk(s1, (StringT)"pOE");
if (s != NULL) F_Printf(NULL, "%s\n", s);
. . .
F_StrBrkUTF8 ()
Returns a pointer to the first occurrence in UTF-8 string s1 of any UTF-8 character in
s2.
642
FDK Programmer’s Reference
F_StrBrkUTF8 ()
...
FDK Function Reference
Synopsis
#include "fencode.h"
. . .
StringT F_StrBrkUTF8 (StringT s1, ConStringT s2);
Arguments
s1
The string to search
s2
A string containing characters to search for
Returns
A pointer to the first occurrence in s1 of any character in s2, or NULL if none of the
characters in s2 occurs in s1.
Example
The following code prints the string 1 ⊕ 2 ⊖ 3 - ⊕ 2 ⊖ 3 - ⊖ 3
. . .
StringT s, s1;
F_FdeInitFontEncs("UTF-8");
s1 = F_StrCopyString("1 \xE2\x8A\x95 2 \xE2\x8A\x96 3");
F_Printf(NULL, s1);
s = F_StrBrkUTF8(s1, "\xE2\x8A\x95")
F_Printf(NULL, " - %s",s);
s = F_StrBrkUTF8(s1, "\xE2\x8A\x96")
F_Printf(NULL, " - %s",s);
...
FDK Programmer’s Reference 643
3
FDK Function Reference
F_StrCat()
F_StrCat()
F_StrCat() concatenates two strings, terminating the resulting string with a null
character.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_StrCat(StringT s1,
ConStringT s2);
Arguments
s1
The first string to concatenate
s2
The string to append to the end of s1
F_StrCat() appends the contents of s2 to s1. For it to work correctly, you must
allocate additional memory to s1.
Returns
The final length of the concatenated string.
Example
The following code prints the string It was the best of times. It was the
worst of times.:
. . .
StringT s1, s2;
s1 = F_StrCopyString("It was the best of times. ");
s2 = F_StrCopyString("It was the worst of times.");
s1 = F_Realloc(s1, F_StrLen(s1)+F_StrLen(s2)+1, NO_DSE);
F_StrCat(s1, s2);
F_Printf(NULL, "%s\n", s1);
. . .
644
FDK Programmer’s Reference
F_StrCatCharN()
...
FDK Function Reference
F_StrCatCharN()
F_StrCatCharN() appends a character to a string, limiting the length of the resulting
string to a specified length.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_StrCatCharN(StringT s1,
PUCharT c,
UIntT n);
Arguments
s1
The string
c
The character to append to the string
n
The length (including the terminating 0) to which to limit the
concatenated string
Returns
The final length of the concatenated string.
Example
The following code prints the string Cronides.:
. . .
StringT s;
s = F_StrNew(F_StrLen("Cronides")+(IntT)1);
F_StrCpy(s, (StringT)"Cronides");
F_StrCatCharN(s,(UCharT)'.', (IntT)10);
F_Printf(NULL, "%s\n", s);
. . .
FDK Programmer’s Reference 645
3
FDK Function Reference
F_StrCatDblCharNEnc()
F_StrCatDblCharNEnc()
F_StrCatDblCharNEnc() appends a double-byte character to a string, limiting the
length of the resulting string to a specified length.
..............................................................................
This function specifies string length in terms of bytes and not
characters. Also, n includes the terminating byte. A value of 7 for n limits the length of
the string to three double-byte characters.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fencode.h"
. . .
IntT F_StrCatDblCharN(StringT s1,
UCharT first,
UCharT second,
UIntT n,
FontEncIdT feId);
Arguments
s1
The string
first
The first byte of the double-byte character to append to the string
second
The second byte of the double-byte character to append to the string
n
The length (including the terminating NULL byte) to which to limit the
concatenated string
feId
The ID of the font encoding for the charcter you are appending to the
string
Returns
The final length in bytes of the concatenated string.
646
FDK Programmer’s Reference
F_StrCatIntN()
...
FDK Function Reference
Example
The following code prints the string s, with the character 82CD added to the end of it:
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
StringT s, myString;
. . .
/* Assuming a string of double-byte chars in myString... */
s = F_StrNew(F_StrLen(myString)+(IntT)2);
F_StrCpy(s, myString);
F_StrCatDblCharNEnc(s,\x82, \xCD, F_StrLen(s), feId);
F_Printf(NULL, "%s\n", s);
. . .
F_StrCatIntN()
F_StrCatIntN() converts an integer to a string and appends it to a string, limiting
the length of the resulting string to a specified length.
..............................................................................
This function specifies string length in terms of bytes and not
characters. Also, n includes the terminating byte. This is important if the string contains
double-byte characters.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_StrCatIntN(StringT s1,
IntT i,
UIntT n);
Arguments
s1
The string
i
The integer to append to the string
n
The length (including the terminating 0) to which to limit the
concatenated string
Returns
The final length of the concatenated string.
FDK Programmer’s Reference 647
3
FDK Function Reference
F_StrCatIntN()
Example
The following code prints the string Number 9:
. . .
StringT s;
s = F_StrCopyString("Number ");
s = F_Realloc(s, F_StrLen(s)+(IntT)1, NO_DSE);
F_StrCatIntN(s, (IntT)9, (IntT)9);
F_Printf(NULL, "%s\n", s);
. . .
648
FDK Programmer’s Reference
F_StrCatN()
...
FDK Function Reference
F_StrCatN()
F_StrCatN() concatenates two strings, limiting the length of the resulting string to a
specified length.
..............................................................................
This function specifies string length in terms of bytes and not
characters. Also, n includes the terminating byte. This is important if the string contains
double-byte characters. For strings in an encoding other than FrameRoman, use
F_StrCatNEnc().
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_StrCatN(StringT s1,
ConStringT s2,
UIntT n);
Arguments
s1
The first string to concatenate
s2
The string to append to s1
n
The length (including the terminating 0) to which to limit the
concatenated string
F_StrCat() appends the contents of s2 to s1. For it to work correctly, you must
allocate additional memory to s1.
Returns
The final length of the concatenated string.
FDK Programmer’s Reference 649
3
FDK Function Reference
F_StrCatNEnc()
Example
The following code prints the string The bitter wrath of Achilleus, lord
of the house:
. . .
StringT s1, s2;
s1 = F_StrCopyString("The bitter wrath of Achilleus, ");
s2 = F_StrCopyString("lord of the house of Peleus");
s1 = F_Realloc(s1, F_StrLen(s1)+(IntT)18, NO_DSE);
F_StrCatN(s1, s2, F_StrLen(s1)+(IntT)18);
F_Printf(NULL, "%s\n", s1);
. . .
F_StrCatNEnc()
F_StrCatNEnc() concatenates two strings of the specified encoding, limiting the
length of the resulting string to a specified length.
..............................................................................
This function specifies string length in terms of bytes and not
characters. Note that a string of three double-byte characters has three characters and six
bytes.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fencode.h"
. . .
IntT F_StrCatNEnc(StringT s1,
ConStringT s2,
UIntT n,
FontEncIdT feId);
Arguments
s1
The first string to concatenate
s2
The string to append to s1
n
The length (including the terminating 0) to which to limit the
concatenated string
feId
The ID of the font encoding for your strings
F_StrCat() appends the contents of s2 to s1. For it to work correctly, you must
allocate sufficient memory to s1.
650
FDK Programmer’s Reference
F_StrCatUTF8CharNByte ()
...
FDK Function Reference
Returns
The final length in bytes of the concatenated string.
Example
The following code prints s1 after concatenating at least 9 characters of s2 to the end of
s1. Note that F_StrCatNEnc() counts by bytes. With Japanese text, characters could
be either one or two bytes each. For this reason, don’t use F_StrLenEnc() which
returns the string length in characters; instead, use F_StrLen() to return the string
length in bytes.
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
IntT i;
StringT s1, s2;
/*
* Assuming you have Japanese text in s1 and s2... */
i = F_StrLen(s1) + (F_StrLen(s2) + 1);
if (s1 = F_Realloc(s1, i, NO_DSE)) {
F_StrCatNEnc(s1, s2, i, feId);
F_Printf(NULL, "%s\n", s1);
}
. . .
F_StrCatUTF8CharNByte ()
Appends a UTF8 character to a string, limiting the length of the resulting string to a
specified length
..............................................................................
The length of the resulting string is calculated in bytes, not characters.
This is important because a UTF-8 character may take up to 4 bytes.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fencode.h"
. . .
IntT F_StrCatUTF8CharNByte ( StringT s, const UCharT *c, IntT
n);
FDK Programmer’s Reference 651
3
FDK Function Reference
F_StrChr()
Arguments
s
The string
c
The character to append
n
The length limit (in bytes) for s1
Returns
Final length of the copied string in terms of bytes
Example
The following code prints the string Бо + г = Бог
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
UCharT s[256];
StringT a = "\xD0\x91\xD0\xBE";
StringT b = "\xD0\xB3";
s[0]=0;
F_StrCpy(s,a);
F_StrCatUTF8CharNByte( s, b, 256);
F_Printf(NULL, "%s + %s = %s\n", a, b, s);
. . .
F_StrChr()
F_StrChr() finds the first occurrence of a character in a string.
..............................................................................
This function only works with characters that use the FrameRoman
encoding. If your document includes Asian text, use F_StrChrEnc() instead.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
StringT F_StrChr(StringT s, PUCharT c);
652
FDK Programmer’s Reference
F_StrChrEnc()
...
FDK Function Reference
Arguments
s
The string to search
c
The character to search s for
Returns
A pointer to the first occurrence of c in s, or NULL if c does not occur in s.
Example
The following code prints the string Hecuba?:
. . .
StringT s, string;
s = F_StrCopyString("Who was he to Hecuba?");
string = F_StrChr(s, 'H');
F_Printf(NULL, "%s\n", string);
. . .
F_StrChrEnc()
F_StrChrEnc() finds the first occurrence in a string, of a double-byte character of
the specified encoding.
Synopsis
#include "fencode.h"
. . .
StringT F_StrChrEnc(ConStringT s,
UCharT first,
UCharT second,
FontEncIdT feId);
Arguments
s
The string to search
first
The first byte of the character to search s for
second
The second byte of the character to search s for
feId
The ID of the font encoding to check against
Returns
A pointer to the first occurrence in s of the double byte character represented by first
and second, or NULL if such a character does not occur in s.
FDK Programmer’s Reference 653
3
FDK Function Reference
F_StrChrEnc()
Example
The following code returns a string beginning with the Japanese character 89C3. Also
see the example for “F_StrChr()” on page 652:
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
StringT s, string;
/* Assuming a string of double-byte chars in s... */
string = F_StrChrEnc(s, \x89, \xC3, feId);
. . .
654
FDK Programmer’s Reference
F_StrChrUTF8()
...
FDK Function Reference
F_StrChrUTF8()
Returns a pointer to the first occurrence of a UTF-8 character in a UTF-8 string, starting
from the end of the string
Synopsis
#include "fencode.h"
. . .
StringT F_StrChrUTF8(ConStringT s, const UCharT *c);
Arguments
s
The string to search
c
The character (in terms of a byte sequence) to search s for
Returns
A pointer to the first occurrence of c in s, or NULL if c doesn’t occur in s
Example
The following code prints "Бог и взял". Here the long hex sequence
"\xD0\x91...\xD0\xBB" is the representation of "Бог дал, Бог и взял" in UTF-8 and
"\xD0\x91" of the character 'Б'
#include "fencode.h"
. . .
StringT s, c, string;
F_FdeInitFontEncs((ConStringT)"UTF-8");
s =
F_StrCopyString("\xD0\x91\xD0\xBE\xD0\xB3\x20\xD0\xB4\xD0\xB0\xD
0\xBB\x2C\x20\xD0\x91\xD0\xBE\xD0\xB3\x20\xD0\xB8\x20\xD0\xB2\xD
0\xB7\xD1\x8F\xD 0\xBB");
c = "\xD0\xBB";
string = F_StrRChrUTF8(s, c);
F_Printf(NULL, "%s\n", string);
. . .
FDK Programmer’s Reference 655
3
FDK Function Reference
F_StrCmp()
F_StrCmp()
F_StrCmp() is equivalent to strcmp(). It compares the ASCII value of each
character in two null-terminated byte strings.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_StrCmp(ConStringT s1,
ConStringT s2);
Arguments
s1
A string
s2
A string to compare to s1
Returns
An integer greater than 0 if s1 is lexicographically greater than s2; 0 if the strings
are equal; or an integer less than 0 if s1 is less than s2.
Example
The following code prints the string The strings compare:
. . .
if(!F_StrCmp((StringT)"string1", (StringT)"string1"))
F_Printf(NULL, "The strings compare\n");
. . .
656
FDK Programmer’s Reference
F_StrCmpN()
...
FDK Function Reference
F_StrCmpN()
F_StrCmpN() compares two strings to a specified number of characters.
..............................................................................
This function only works with characters that use the FrameRoman
encoding. If your document includes Asian text, use F_StrCmpNEnc() instead.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_StrCmpN(ConStringT s1,
ConStringT s2,
IntT n);
Arguments
s1
A string
s2
A string to compare to s1
n
The number of characters to compare
Returns
An integer greater than 0 if s1 is lexicographically greater than s2; 0 if the strings
are equal; or an integer less than 0 if s1 is less than s2.
Example
The following code prints the string The strings compare:
. . .
if(!F_StrCmpN((StringT)"string1", (StringT)"string2",(IntT) 6))
F_Printf(NULL, "The strings compare.\n");
. . .
F_StrCmpNEnc()
F_StrCmpNEnc() compares two strings of the specified encoding up to a specified
number of bytes. Note that case is not applicable for double-byte characters, so this
function only considers case within the 7 bit ASCII range of characters.
FDK Programmer’s Reference 657
3
FDK Function Reference
F_StrICmpNUTF8Char
Synopsis
#include "fencode.h"
. . .
IntT F_StrCmpNEnc(ConStringT s1,
ConStringT s2,
IntT n,
FontEncIdT feId);
Arguments
s1
A string
s2
A string to compare to s1
n
The length of the strings, in bytes, by which to compare the strings
feId
The ID of the font encoding to check against
Returns
An integer greater than 0 if s1 is lexicographically greater than s2; 0 if the strings
are equal; or an integer less than 0 if s1 is less than s2.
Example
The following code determines whether s1 is lower in sort order than s2:
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
ConStringT s1, s2;
. . .
/* Assuming you have Japanese text in string1 and string2... */
if(F_StrCmpNEnc(s1, s2, (IntT) 6, feId) < 0)
F_Printf(NULL, "The first 6 bytes of s1 are lower in
sort order than the first 6 bytes of s2.\n");
. . .
F_StrICmpNUTF8Char
Compares the Unicode code points of each character in two UTF-8 strings up to a
specified number of UTF-8 characters (not bytes). This function ignores cases.
658
FDK Programmer’s Reference
F_StrCmpUTF8()
...
FDK Function Reference
Synopsis
#include "fencode.h"
. . .
IntT F_StrICmpNUTF8Char ( ConStringT s1, ConStringT s2, IntT n);
Arguments
s1
A string
s2
A string to compare to s1
Returns
An integer greater than 0 if s1 is lexicographically greater than s2; 0 if the strings are
equal; or an integer less than 0 if s1 is less than s2.
Example
The following code prints the string First 2 chars of Бог and Боо are equal
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
StringT s1 = F_StrCopyString("\xD0\x91\xD0\xBE\xD0\xB3");
StringT s2 = F_StrCopyString("\xD0\x91\xD0\xBE\xD0\xBE");
if(!F_StrICmpNUTF8Char(s1, s2, 2))
F_Printf(NULL, "First 2 chars of %s and %s are equal\n", s1,
s2);
. . .
F_StrCmpUTF8()
Compares the Unicode code point of each character in two null-terminated UTF-8
strings.
Synopsis
#include "fencode.h"
. . .
IntT F_StrCmpUTF8(ConStringT s1, ConStringT s2);
FDK Programmer’s Reference 659
3
FDK Function Reference
F_StrCmpUTF8()
Arguments
s1
A string
s2
A string to compare to s1
Returns
An integer greater than 0 if s1 is lexicographically greater than s2; 0 if the strings are
equal; or an integer less than 0 if s1 is less than s2
Example
The following code prints the string The strings Áîã and Áîã are equal
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
StringT s1 = F_StrCopyString("\xD0\x91\xD0\xBE\xD0\xB3");
StringT s2 = F_StrCopyString("\xD0\x91\xD0\xBE\xD0\xB3");
if(!F_StrCmp(s1, s2))
F_Printf(NULL, "The strings %s and %s are equal\n", s1, s2);
. . .
The following code prints the string Бог дал is less than Бог и взял
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
StringT s1 =
F_StrCopyString("\xD0\x91\xD0\xBE\xD0\xB3\x20\xD0\xB4\xD0\xB0\xD
0\xBB");
StringT s2 =
F_StrCopyString("\xD0\x91\xD0\xBE\xD0\xB3\x20\xD0\xB8\x20\xD0\xB
2\xD0\xB
7\xD1\x8F\xD0\xBB");
if(F_StrCmp(s1, s2)<0)
F_Printf(NULL, "%s is less than %s\n", s1, s2);
else
F_Printf(NULL, "%s is greater than %s\n", s1, s2);
. . .
660
FDK Programmer’s Reference
F_StrCmpUTF8Locale()
...
FDK Function Reference
F_StrCmpUTF8Locale()
Compares the UTF-8 string based on Unicode Collation Algorithm (UCA)
NOTE: Because the comparison honors the current system locale, it varies slightly with
language rules in different locales.
This doesn’t perform a code point-based comparison, but instead uses UCA and
localization information in order to compare strings correctly. For example, if used for
sorting, it sorts all digits together, sorting the Devanagiri representation of 2 between the
English representations of 1 and 3. Similarly, the 'Double Width B' sorts between 'A'
and 'C' even though its code point is much higher. This also performs canonical
normalization to ensure that the Unicode character sequences 0x00C4 and 0x0041
0x0308, which are both ways of representing Ä, are considered equivalent.
Synopsis
#include "fencode.h"
. . .
IntT F_StrCmpUTF8Locale (ConStringT s1, ConStringT s2);
Arguments
s1
A string
s2
A string to compare to s1
Returns
An integer greater than 0 if s1 is lexicographically greater than s2; 0 if the strings are
equal; or an integer less than 0 if s1 is less than s2.
Example
The following code prints the string a<B<c
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
StringT B = "\xEF\xBC\xA2";/* double width B */
if ((F_StrICmpUTF8Locale("a", B)<0)
&& (F_StrICmpUTF8Locale(B, "c")<0))
F_Printf(NULL, "a<B<c");
. . .
FDK Programmer’s Reference 661
3
FDK Function Reference
F_StrICmpUTF8Locale()
F_StrICmpUTF8Locale()
Compares the UTF-8 string based on Unicode Collation Algorithm (UCA) case
insensitively
NOTE: Because the comparison honors the current system locale, it varies slightly with
language rules in different locales.
This doesn’t perform a code point-based comparison, but instead uses UCA and
localization information in order to compare strings correctly. For example, if used for
sorting, it sorts all digits together, sorting the Devanagiri representation of 2 between the
English representations of 1 and 3. Similarly, the 'Double Width B' sorts between 'a' and
'C' even though its code point is much higher. This also performs canonical
normalization to ensure that the Unicode character sequences 0x00C4 and 0x0041
0x0308, which are both ways of representing Ä, are considered equivalent.
F_StrConvertEnc(), F_StrConvertEnc_IgnoreControlChars(),
F_StrConvertEnc_ConvertControlChars()
Utility function for conversion between various encodings.
Synopsis
#include "fencode.h"
. . .
StringT F_StrConvertEnc (ConStringT in,
FTextEncodingT from, FTextEncodingT to);
StringT F_StrConvertEnc_IgnoreControlChars (ConStringT in,
FTextEncodingT from, FTextEncodingT to);
StringT F_StrConvertEnc_ConvertControlChars (ConStringT in,
FTextEncodingT from, FTextEncodingT to);
F_StrConvertEnc is identical to F_StrConvertEnc_IgnoreControlChars.
F_StrConvertEnc_IgnoreControlChars doesn’t modify the lower 32 characters
of 0x00-0x1F and copies them byte-by-byte irrespective of from and to encoding
(except in the case of conversion between UTF-16 and another encoding, where
0x0010 is converted to 0x10 and vice-versa).
F_StrConvertEnc_ConvertControlChars does modify the lower 32 characters
of 0x00-0x1F assuming them to be in the from encoding. Thus it converts 0x14 to
0x2003 if from is F_EncMakerRoman and to is F_EncUTF8.
662
FDK Programmer’s Reference
...
FDK Function Reference
F_StrConvertEnc(), F_StrConvertEnc_IgnoreControlChars(), F_StrConvertEnc_ConvertControlChars()
UTF-16 strings are expected in the endianness of the platform and are returned in the
platform endianness. You must ensure that the input string in is valid in the encoding
from. Incorrect or lossy conversions due to incorrect input strings, incorrect encodings,
and conversion limitations inherent to the encodings might cause question marks '?' to
appear in the string. An empty or NULL string might also be returned. For incorrect
UTF-8 inputs (when from is F_EncUTF8), a string with 3 question marks "???" is
returned.
NOTE: Strings returned by this function must be freed by using F_Free
NOTE: If from is F_EncUTF16, the UChar16T pointer pointing towards the UTF-16
string should be typecasted to ConStringT (it would be treated correctly inside). If to
is F_EncUTF16, the return value should be typecasted to UChar16T *.
F_EncSpecialSymbol, F_EncSpecialZapfDingbats and
F_EncSpecialWingdings can only be used as from encodings.
Arguments
in
The string to convert
from
The encoding from which to convert
to
The encoding to which the string must be converted
The possible values of the FTextEncodingT parameters from and to are:
F_EncMakerRoman
Corresponds to FrameRoman encoding
F_EncISOLatin1
F_EncASCII
F_EncANSI
F_EncMacASCII
F_EncJIS7
F_EncShiftJIS
Corresponds to JISX0208.ShiftJIS
encoding
F_EncJIS8_EUC
F_EncBig5
Corresponds to BIG5 encoding
F_EncCNS_EUC
F_EncGB8_EUC
Corresponds to GB2312-80.EUC encoding
F_EncHZ
F_EncKSC8_EUC
Corresponds to KSC5601-1992 encoding
F_EncUTF8
FDK Programmer’s Reference 663
3
FDK Function Reference
F_StrConvertEnc(), F_StrConvertEnc_IgnoreControlChars(),
F_EncUTF16
F_EncSpecialSymbol
Can only be used as from encoding
F_EncSpecialZapfDingbats
Can only be used as from encoding
F_EncSpecialWingdings
Can only be used as from encoding
Returns
The converted string
Example
The following code prints Symbol αβχ Shift-JIS あぶい
#include "fencode.h"
. . .
StringT symb="abc";
StringT sjis="\x82\xA0\x82\xD4\x82\xA2";
StringT temp;
F_FdeInitFontEncs((ConStringT)"UTF-8");
F_Printf(NULL, "Symbol ");
temp = F_StrConverEnc(symb, F_EncSpecialSymbol, F_EncUTF8);
F_Printf(NULL, temp);
F_Free(temp);
F_Printf(NULL, " Shift-JIS");
temp = F_StrConverEnc(sjis, F_EncShiftJIS, F_EncUTF8);
F_Printf(NULL, temp);
F_Free(temp);
...
664
FDK Programmer’s Reference
F_StrCopyString()
...
FDK Function Reference
F_StrCopyString()
F_StrCopyString() returns a copy of a specified string.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
StringT F_StrCopyString(ConStringT s);
Arguments
s
The string to copy
Returns
A copy of the specified string, or NULL if it fails. When you are finished with the
string, use F_Free() to free it. For more information, see “F_Free()” on page 567.
Example
The following code creates a copy of the string Doe-eyed Hera. It prints the copied
string and then deallocates it:
. . .
StringT s;
s = F_StrCopyString((StringT) "Doe-eyed Hera");
if(s != NULL)
{
F_Printf(NULL, "%s\n", s);
F_Free(s);
}
. . .
FDK Programmer’s Reference 665
3
FDK Function Reference
F_StrCpy()
F_StrCpy()
F_StrCpy() copies a string to another string.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
VoidT F_StrCpy(StringT s1,
ConStringT s2);
Arguments
s1
The string to copy s2 to. It must point to a block of modifiable memory
of the same size as s2.
s2
The string to copy.
F_StrCpy() does not automatically allocate memory to s1. For it to work correctly,
you must allocate memory to it.
Returns
VoidT.
Example
The following code copies the string Rosy-fingered dawn:
. . .
StringT s1;
s1 = F_StrNew(F_StrLen("Rosy-fingered dawn")+1);
F_StrCpy(s1, (StringT) "Rosy-fingered dawn");
. . .
666
FDK Programmer’s Reference
F_StrCpyN()
...
FDK Function Reference
F_StrCpyN()
F_StrCpyN() copies a string to another string, limiting the target string to a specified
number of bytes.
..............................................................................
The length of the resulting string is calculated in bytes, not characters.
This is important if the string contains double-byte characters.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_StrCpyN(StringT s1,
ConStringT s2,
UIntT n);
Arguments
s1
A string
s2
A string to copy to s1
n
The number of bytes to which to limit the length of s1 (including the
terminating 0)
F_StrCpyN() does not automatically allocate memory to s1. For it to work correctly,
you must allocate memory to it.
Returns
The final length of the copied string.
Example
The following code prints the string Aias:
. . .
StringT s1;
IntT len;
s1 = F_StrNew(5);
len = F_StrCpyN(s1, (StringT)"Aias Telemonian", (IntT)5);
F_Printf(NULL, "%s\n", s1);
. . .
FDK Programmer’s Reference 667
3
FDK Function Reference
F_StrCpyNEnc()
F_StrCpyNEnc()
F_StrCpyNEnc() copies a string of the specified encoding to another, limiting the
length of the target string to a specified number of bytes.
..............................................................................
This function specifies string length in terms of bytes and not
characters. Note that a string of three double-byte characters has three characters and six
bytes.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fencode.h"
. . .
IntT F_StrCpyNEnc(StringT s1,
ConStringT s2,
UIntT n,
FontEncIdT feId);
Arguments
s1
A string
s2
The string to copy to s1
n
The length in bytes (including the terminating 0) to which to limit the
concatenated string
feId
The ID of the font encoding for your strings
F_StrCpyNEnc() copies the contents of s2 to s1. For it to work correctly, you
must allocate sufficient memory to s1.
Returns
The final length in bytes of the copied string.
668
FDK Programmer’s Reference
F_StrCpyNUTF8Char ()
...
FDK Function Reference
Example
The following code prints the number of characters and bytes in s1, followed by the
contents of s1. Also see “F_StrCpyN()” on page 667
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
IntT i, byteLen, charLen;
StringT s1, s2;
/* Assuming you have Japanese text in s2, */
/* when allocating the string it’s safest to assume */
/* 2 bytes per char, plus the terminating byte. */
s1 = F_StrNew((IntT)9);
byteLen = F_StrCpyNEnc(s1, s2, (IntT)8, feId);
charLen = F_StrLenEnc(s1);
F_Printf(NULL, "These %d characters take up %d bytes:\n
%s\n", charLen, byteLen, s1);
. . .
F_StrCpyNUTF8Char ()
Copies a string to another string, limiting the target string to a specified number of
characters
..............................................................................
The length of the resulting string is calculated in characters, not bytes.
This is important because a UTF-8 character may take up to 4 bytes. The resulting string
must have adequate space.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fencode.h"
. . .
IntT F_StrCpyNUTF8Char (StringT s1,ConStringT s2,IntT n);
Arguments
s1
A string
s2
A string to copy to s1
n
The length limit (in characters) for s1
FDK Programmer’s Reference 669
3
FDK Function Reference
F_StrEqual()
Returns
Final length of the copied string in terms of characters
Example
The following code prints the string The string Бо was copied from Бог
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
StringT s2 = F_StrCopyString("\xD0\x91\xD0\xBE\xD0\xB3");
UCharT s1[256];
s1[0]=0;
F_StrCpyNUTF8Char(s1,s2,2);
F_Printf(NULL, "The string %s was copied from %s\n", s1, s2);
. . .
F_StrEqual()
F_StrEqual() compares two strings.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
BoolT F_StrEqual(ConStringT s1,
ConStringT s2);
Arguments
s1
A string
s2
A string to compare with s1
Returns
True if the strings are equal; otherwise, False.
Example
The following code prints the string The strings are equal:
. . .
if (F_StrEqual((StringT)"Myrmidon", (StringT)"Myrmidon"))
F_Printf(NULL, "The strings are equal.\n");
. . .
670
FDK Programmer’s Reference
F_StrEqualN()
...
FDK Function Reference
F_StrEqualN()
F_StrEqualN() compares two strings up to a specified number of characters.
..............................................................................
The number of characters to compare is calculated in bytes, not
characters. This is important if the string contains double-byte characters.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
BoolT F_StrEqualN(ConStringT s1,
ConStringT s2,
UIntT n);
Arguments
s1
A string
s2
A string to compare with s1
n
The number of characters to which to compare the strings
Returns
True if the strings are equal to n characters; otherwise, False.
Example
The following code prints the string The first 6 chars are equal:
. . .
if(F_StrEqualN((StringT)"string1", (StringT)"string2",(IntT) 6))
F_Printf(NULL, "The first 6 chars are equal.\n");
. . .
F_StrICmp()
F_StrICmp() compares two strings, ignoring case.
FDK Programmer’s Reference 671
3
FDK Function Reference
F_StrICmpEnc()
..............................................................................
This function only works with characters that use the FrameRoman
encoding. This is important if your document includes Asian text.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_StrICmp(ConStringT s1,
ConStringT s2);
Arguments
s1
A string
s2
A string to compare to s1
Returns
An integer greater than 0 if s1 is lexicographically greater than s2; 0 if the strings
are equal; or an integer less than 0 if s1 is less than s2.
Example
The following code prints the string The strings compare:
. . .
if(!F_StrICmp((StringT)"String1", (StringT)"string1"))
F_Printf(NULL, "The strings compare.\n");
. . .
F_StrICmpEnc()
F_StrICmpEnc() compares two strings of the specified encoding, ignoring case.
Note that double-byte characters have no case; when comparing strings, this function
ignores the case of any characters in those strings that are within the 7-bit ASCII range.
Synopsis
#include "fencode.h"
. . .
IntT F_StrICmpEnc(ConStringT s1,
ConStringT s2,
FontEncIdT feId);
672
FDK Programmer’s Reference
F_StrICmpN()
...
FDK Function Reference
Arguments
s1
A string
s2
A string to compare to s1
feId
The ID of the font encoding to check against
Returns
An integer greater than 0 if s1 is lexicographically greater than s2; 0 if the strings
are equal; or an integer less than 0 if s1 is less than s2.
Example
The following code determines whether to print the string, "s1 is lower in sort
order than s2.":
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
ConStringT s1, s2;
. . .
/* Assuming you have Japanese text in string1 and string2... */
if(F_StrICmpEnc(s1, s2, feId) < 0))
F_Printf(NULL, "s1 is lower in sort order than s2.\n");
. . .
F_StrICmpN()
F_StrICmpN() compares two strings to a specified number of characters, ignoring
case.
..............................................................................
This function only works with characters that use the FrameRoman
encoding. This is important if your document includes Asian text.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_StrICmpN(ConStringT s1,
ConStringT s2,
IntT n);
FDK Programmer’s Reference 673
3
FDK Function Reference
F_StrICmpNEnc()
Arguments
s1
A string
s2
A string to compare to s1
n
The number of characters to compare
Returns
An integer greater than 0 if s1 is lexicographically greater than s2; 0 if the strings
are equal; or an integer less than 0 if s1 is less than s2.
Example
The following code prints the string The strings compare to six
characters:
. . .
if(!F_StrICmpN((StringT)"String1",(StringT)"string2", (IntT) 6))
F_Printf(NULL, "The strings compare to six characters.\n");
. . .
F_StrICmpNEnc()
F_StrICmpNEnc() compares two strings of the specified encoding up to a specified
number of bytes. This function ignores case for characters in the 7-bit ASCII range.
..............................................................................
This function specifies string length in terms of bytes and not
characters. Note that a string of three double-byte characters has three characters and six
bytes.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fencode.h"
. . .
IntT F_StrICmpNEnc(ConStringT s1,
ConStringT s2,
IntT n,
FontEncIdT feId);
674
FDK Programmer’s Reference
F_StrIEqual()
...
FDK Function Reference
Arguments
s1
A string
s2
A string to compare to s1
n
The length of the strings, in bytes, by which to compare the strings
feId
The ID of the font encoding to check against
Returns
An integer greater than 0 if s1 is lexicographically greater than s2; 0 if the strings
are equal; or an integer less than 0 if s1 is less than s2.
Example
The following code determines whether s1 is lower in sort order than s2:
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
ConStringT s1, s2;
. . .
/* Assuming you have Japanese text in string1 and string2... */
if(F_StrICmpNEnc(s1, s2, (IntT) 6, feId) < 0))
F_Printf(NULL, "The first 6 bytes of s1 are lower in
sort order than the first 6 bytes of s2.\n");
. . .
F_StrIEqual()
F_StrIEqual() compares two strings, ignoring case.
..............................................................................
This function only works with characters that use the FrameRoman
encoding. This is important if your document includes Asian text.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
BoolT F_StrIEqual(ConStringT s1,
ConStringT s2);
FDK Programmer’s Reference 675
3
FDK Function Reference
F_StrIEqualEnc()
Arguments
s1
A string
s2
A string to compare with s1
Returns
True if the strings are equal; otherwise, False.
Example
The following code prints the string The strings are equal:
. . .
if (F_StrIEqual((StringT)"string", (StringT)"String"))
F_Printf(NULL, "The strings are equal.\n");
. . .
F_StrIEqualEnc()
F_StrIEqualEnc() compares two strings of the specified encoding. This function
ignores case for characters in the 7-bit ASCII range.
Synopsis
#include "fencode.h"
. . .
BoolT F_StrIEqualEnc(ConStringT s1,
ConStringT s2,
FontEncIdT feId);
Arguments
s1
A string
s2
A string to compare with s1
feId
The ID of the font encoding for the strings you are comparing
Returns
True if the strings are equal; otherwise, False.
676
FDK Programmer’s Reference
F_StrIEqualN()
...
FDK Function Reference
Example
The following code prints the string The strings are equal:
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
if (F_StrIEqualEnc((StringT)"string", (StringT)"String", feId))
F_Printf(NULL, "The strings are equal.\n");
. . .
F_StrIEqualN()
F_StrIEqualN() compares two strings up to a specified number of characters,
ignoring case.
..............................................................................
This function only works with characters that use the FrameRoman
encoding. This is important if your document includes Asian text.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
BoolT F_StrIEqualN(ConStringT s1,
ConStringT s2,
UIntT n);
Arguments
s1
A string
s2
A string to compare with s1
n
The number of characters to which to compare the strings
Returns
True if the strings are equal to n characters; otherwise, False.
FDK Programmer’s Reference 677
3
FDK Function Reference
F_StrIEqualNEnc()
Example
The following code prints the string The first 6 chars are equal:
. . .
if(F_StrIEqualN((StringT)"string1",(StringT)"String2",(IntT) 6))
F_Printf(NULL, "The first 6 chars are equal.\n");
. . .
F_StrIEqualNEnc()
F_StrIEqualNEnc() compares two strings of the specified encoding, up to a
specified number of bytes. This function ignores case for characters in the 7-bit ASCII
range.
..............................................................................
This function specifies string length in terms of bytes and not
characters. Note that a string of three double-byte characters has three characters and six
bytes.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fencode.h"
. . .
BoolT F_StrIEqualNEnc(ConStringT s1,
ConStringT s2,
IntT n,
FontEncIdT feId);
Arguments
s1
A string
s2
A string to compare with s1
n
The length of the strings, in bytes, by which to compare the strings
feId
The ID of the font encoding for the strings you are comparing
Returns
True if the strings are equal; otherwise, False.
678
FDK Programmer’s Reference
F_StrIEqualNUTF8Char ()
...
FDK Function Reference
Example
The following code determines whether to print the string The first 12 bytes
are equal:
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
StringT s1, s2;
/* Assuming you have Japanese characters in s1 and s2... */
if (F_StrIEqualNEnc(s1, s2, (IntT) 12, feId))
F_Printf(NULL, "The first 12 bytes are equal.\n");
. . .
F_StrIEqualNUTF8Char ()
Compares the Unicode code points of each character in two UTF-8 strings up to a
specified number of UTF-8 characters (not bytes). This function ignores cases.
Synopsis
#include "fencode.h"
. . .
BoolT F_StrIEqualNUTF8Char ( ConStringT s1, ConStringT s2, IntT
n);
Arguments
s1
A string
s2
The string to compare to s1
Returns
True if the strings are equal, False otherwise.
FDK Programmer’s Reference 679
3
FDK Function Reference
F_StrIPrefixEnc()
Example
The following code prints the string First 2 chars of Бог and Боо are equal
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
StringT s1 = F_StrCopyString("\xD0\x91\xD0\xBE\xD0\xB3");
StringT s2 = F_StrCopyString("\xD0\x91\xD0\xBE\xD0\xBE");
if(!F_StrIEqualNUTF8Char(s1, s2, 2))
F_Printf(NULL, "First 2 chars of %s and %s are equal\n", s1,
s2);
. . .
F_StrIPrefixEnc()
F_StrIPrefixEnc() determines whether s2 is a prefix of s1, checking against
the specified font encoding. This function ignores case for characters in the 7-bit ASCII
range.
Synopsis
#include "fencode.h"
. . .
BoolT F_StrIPrefixEnc(ConStringT s1,
ConStringT s2,
FontEncIdT feId);
Arguments
s1
The string in which to search for s2
s2
The string to search s1 for
feId
The ID of the font encoding to check against
Returns
True if s2 is a prefix of s1, or False if it isn’t.
680
FDK Programmer’s Reference
F_StrIsEmpty()
...
FDK Function Reference
Example
The following code prints the string The second string is a prefix of the
first. Also see the example for “F_StrPrefix()” on page 701:
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
StringT s1;
/* Assuming double-byte chars in s1... */
if(F_StrIPrefixEnc(s1, s1, feId)
F_Printf(NULL, "The second string is a prefix of the
first\n");
. . .
F_StrIsEmpty()
F_StrIsEmpty() determines whether a string is empty.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
BoolT F_StrIsEmpty(StringT s);
Arguments
s
The string to check
Returns
True if s is NULL or the specified string is empty.
Example
The following code prints the string s is empty or NULL:
. . .
StringT s = NULL;
if(F_StrIsEmpty("s"))
F_Printf(NULL, "s is empty or NULL.\n");
. . .
FDK Programmer’s Reference 681
3
FDK Function Reference
F_StrISuffixEnc()
F_StrISuffixEnc()
F_StrISuffixEnc() determines whether s2 is a suffix of s1, checking against the
specified font encoding. This function ignores case for characters in the 7-bit ASCII
range.
..............................................................................
The length of the string is calculated in bytes, not characters. This is
important if the string contains double-byte characters.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fencode.h"
. . .
BoolT F_StrISuffixEnc(ConStringT s1,
ConStringT s2,
FontEncIdT feId);
Arguments
s1
The string in which to search for s2
s2
The string to search s1 for
feId
The ID of the font encoding to check against
Returns
True if s2 is a suffix of s1, or False if it isn’t.
Example
The following code prints the string The second string is a suffix of the
first. Also see the example for “F_StrSuffix()” on page 714:
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
StringT s1;
/* Assuming double-byte chars in s1 and s2... */
if(F_StrISuffixEnc(s1, s2, feId))
F_Printf(NULL, "The second string is a suffix of the
first\n");
. . .
682
FDK Programmer’s Reference
F_StrLen()
...
FDK Function Reference
F_StrLen()
F_StrLen() returns the length of a string.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_StrLen(ConStringT s);
Arguments
s
The string to return the length of
Returns
The length of the specified string.
Example
The following code prints the string Length: 17:
. . .
F_Printf(NULL, "Length: %d\n", F_StrLen("Athena Brighteyes"));
. . .
F_StrLenEnc()
F_StrLenEnc() returns the number of characters of a specific encoding in a string.
..............................................................................
This function returns the length of the string in characters for the
specified encoding. For some encodings, characters in the same string can be doublebyte or single-byte.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fencode.h"
. . .
IntT F_StrLenEnc(ConStringT s, FontEncIdT feId);
FDK Programmer’s Reference 683
3
FDK Function Reference
F_StrLenUTF16()
Arguments
s
The string to return the length of
feId
The ID of the font encoding for s
Returns
The length of the specified string.
Example
The following code prints the length of myString:
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
StringT myString;
/* Assuming a string of ShiftJIS chars in myString... */
F_Printf(NULL, "Length: %d\n", F_StrLen(myString, feId));
. . .
F_StrLenUTF16()
Returns the length of a null-terminated UTF-16 string in terms of number of non-null
code units (number of UChar16T).
NOTE: A UTF-16 string is considered null-terminated if it has a null UChar16T (2
bytes), rather than a null UCharT (1 byte).
Synopsis
#include "fencode.h"
. . .
IntT F_StrLenUTF16 (const UChar16T *string);
Arguments
s
The string whose length must be determined.
Returns
The number of non-null code units (UChar16T) in the null-terminated UTF-16 string
684
FDK Programmer’s Reference
F_StrListAppend()
...
FDK Function Reference
Example
The following code prints The length of the string is 3 code units
#include "fencode.h"
. . .
UChar16T russian_U16[]={0x0411, 0x043E, 0x0433, 0x0000};
IntT n;
F_FdeInitFontEncs((ConStringT)"UTF-8");
n = F_StrLenUTF16(russian_U16);
F_Printf(NULL, "The length of the string is %d code units", n);
...
F_StrListAppend()
F_StrListAppend() copies and appends a string to a string list. It allocates extra
space if it is needed.
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
ErrorT F_StrListAppend(StringListT list,
ConStringT s);
Arguments
list
The string list
s
The string to append to list
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
Example
The following code creates a string list and appends a single string to it:
. . .
StringListT list;
list = F_StrListNew((UIntT)1, (UIntT)1);
if (F_StrListAppend(list, (StringT)"Clothos"))
F_Printf(NULL, "Couldn't allocate string list memory\n");
. . .
FDK Programmer’s Reference 685
3
FDK Function Reference
F_StrListCat()
F_StrListCat()
F_StrListCat() concatenates two string lists.
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
VoidT F_StrListCat(StringListT toList,
StringListT appendList);
Arguments
toList
A string list
appendList
A string list to append to toList
Returns
VoidT.
Example
The following code creates two string lists, appending one to the other. It prints the
string Clothos Lachesis.
. . .
StringListT toList, appendList;
IntT i;
toList = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(toList, (StringT)"Clothos");
appendList = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(appendList, (StringT)"Lachesis");
F_StrListCat(toList, appendList);
for(i=0; i < F_StrListLen(toList); i++)
F_Printf(NULL, "%s ", F_StrListGet(toList, i));
. . .
F_StrListCopy()
F_StrListCopy() copies a specified string from a string list to storage you provide.
686
FDK Programmer’s Reference
F_StrListCopy()
...
FDK Function Reference
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
IntT F_StrListCopy(StringListT list,
IntT n,
StringT s,
IntT size);
Arguments
list
The string list containing the string to copy.
n
The index of the string to copy (where 0 is the index of the first string in
the list).
s
A pointer to a block of modifiable memory for the copied string. Free this
memory when you are done with it.
size
The number of bytes of the string to copy (including the terminating 0).
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
Example
The following code creates a string list and copies its first element to a string. It prints
the string Clothos has 7 chars.
. . .
StringListT list;
StringT s;
IntT i;
s = F_StrNew((UIntT)8);
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
i = F_StrListCopy(list, (IntT)0, s, (IntT)8);
F_Printf(NULL, "%s has %d chars\n", s, i);
. . .
FDK Programmer’s Reference 687
3
FDK Function Reference
F_StrListCopyList()
F_StrListCopyList()
F_StrListCopyList() makes a copy of a string list.
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
StringListT F_StrListCopyList(StringListT list);
Arguments
list
The string list to copy
Returns
A copy of the specified string list or NULL if there is insufficient memory. Use
F_StrListFree() to free the returned string list when you are done with it.
Example
The following code creates a string list and copies it to another string list. It prints the
string Clothos.
. . .
StringListT list, copy;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
copy = F_StrListCopyList(list);
F_Printf(NULL, "%s\n", F_StrListGet(copy, 0));
. . .
688
FDK Programmer’s Reference
F_StrListFirst()
...
FDK Function Reference
F_StrListFirst()
F_StrListFirst() is a macro that returns the first string in a specified string list. It
has the same effect as calling F_StrListGet(list, 0).
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
StringT F_StrListFirst(StringListT list);
Arguments
list
The string list from which to return the first string
Returns
The first string in the specified list.
Example
The following code creates a string list and prints its first string, Clothos:
. . .
StringListT list;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
F_StrListAppend(list, (StringT)"Lachesis");
F_Printf(NULL, "%s\n", F_StrListFirst(list));
. . .
FDK Programmer’s Reference 689
F_StrListFree()
F_StrListFree() frees a string list and all of the strings in it.
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
VoidT F_StrListFree(StringListT list);
Arguments
list
The string list to free
Returns
VoidT.
Example
The following code creates a string list and frees it:
. . .
StringListT list;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
F_StrListAppend(list, (StringT)"Lachesis");
F_StrListFree(list);
. . .
F_StrListGet()
...
FDK Function Reference
F_StrListGet()
F_StrListGet() returns a specified string in a string list. If the string list is freed or
changed, the string returned by F_StrListGet() is invalidated. F_StrListGet()
provides fast access to the strings in the string list.
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
StringT F_StrListGet(StringListT list,
IntT n);
Arguments
list
The string list
n
The index of the string to get (where 0 is the index of the first string in
the list)
Returns
The specified string, or NULL if it couldn’t find the string. If you change or free the
returned string, it has side effects on the string list.
Example
The following code creates a string list and prints all of its strings:
. . .
StringListT list;
IntT i;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
F_StrListAppend(list, (StringT)"Lachesis");
for(i=0; i < F_StrListLen(list); i++)
F_Printf(NULL, "%s ", F_StrListGet(list, i));
. . .
F_StrListIIndex()
F_StrListIIndex() returns the position of the first occurrence (ignoring case) of a
string in a specified string list.
FDK Programmer’s Reference 691
3
FDK Function Reference
F_StrListIIndex()
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
IntT F_StrListIIndex(StringListT list,
StringT s);
Arguments
list
The string list
s
The string to find the first occurrence of
Returns
The position of s in the list, or -1 if s does not occur in list.
Example
The following code creates a string list and finds the string clothos in it (ignoring
case). It prints the string clothos at 0th position.
. . .
StringListT list;
IntT i;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
F_StrListAppend(list, (StringT)"Lachesis");
i = F_StrListIIndex(list, "clothos");
if(i != -1)
F_Printf(NULL, "clothos at %dth position\n", i);
. . .
692
FDK Programmer’s Reference
F_StrListIndex()
...
FDK Function Reference
F_StrListIndex()
F_StrListIndex() returns the position of the first occurrence of a string in a
specified string list.
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
IntT F_StrListIndex(StringListT list,
StringT s);
Arguments
list
The string list
s
The string to find the first occurrence of
Returns
The position of s in the list, or -1 if s does not occur in list.
Example
The following code creates a string list and finds the string clothos in it. It prints the
string Lachesis at 1th position.
. . .
StringListT list;
IntT i;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
F_StrListAppend(list, (StringT)"Lachesis");
i = F_StrListIndex(list, "Lachesis");
if(i != -1)
F_Printf(NULL, "Lachesis at %dth position\n", i);
. . .
FDK Programmer’s Reference 693
3
FDK Function Reference
F_StrListInsert()
F_StrListInsert()
F_StrListInsert() inserts a string into a list at a specified location. It allocates
extra space if necessary.
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
ErrorT F_StrListInsert(StringListT list,
StringT s,
UIntT position);
Arguments
list
The string list
s
The string to insert
position
The position at which to insert the string in the list (where 0 is the
position of the first string in the list)
Returns
FdeSuccess if it succeeds, or a nonzero value if it fails.
Example
The following code creates a string list with two elements and inserts the string
atropos between them.
. . .
StringListT list;
IntT i;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
F_StrListAppend(list, (StringT)"Lachesis");
F_StrListInsert(list, "Atropos", 1);
. . .
F_StrListLast()
F_StrListLast() is a macro that returns the last string in a specified string list. It
has the same effect as calling F_StrListGet(list, F_StrListLen(list)-1).
694
FDK Programmer’s Reference
F_StrListLen()
...
FDK Function Reference
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
StringT F_StrListLast(StringListT list);
Arguments
list
The string list
Returns
The last string in the specified list.
Example
The following code creates a string list and prints its last string, Lachesis:
. . .
StringListT list;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
F_StrListAppend(list, (StringT)"Lachesis");
F_Printf(NULL, "%s\n", F_StrListLast(list));
. . .
F_StrListLen()
F_StrListLen() returns the number of strings in a specified list.
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
IntT F_StrListLen(StringListT list);
Arguments
list
The string list
Returns
The number of strings in the list.
FDK Programmer’s Reference 695
3
FDK Function Reference
F_StrListNew()
Example
The following code creates a string list and prints its length, Length 2:
. . .
StringListT list;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
F_StrListAppend(list, (StringT)"Lachesis");
F_Printf(NULL, "Length: %d", F_StrListLen(list));
. . .
F_StrListNew()
F_StrListNew() allocates a new string list with a specified number of strings.
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
StringListT F_StrListNew(UIntT numStrings,
UIntT quantum);
Arguments
numStrings
The number of strings in the new list
quantum
The allocation quantum for increasing the size of the list
Returns
The created string list, or NULL if the list can’t be allocated. When you are finished
with the returned string list, use F_StrListFree() to free it.
Example
The following code creates a string list, adds a string to it, and then frees the string list:
. . .
StringListT list;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
F_StrListFree(list);
. . .
696
FDK Programmer’s Reference
F_StrListRemove()
...
FDK Function Reference
F_StrListRemove()
F_StrListRemove() deletes a specified string from a string list.
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
VoidT F_StrListRemove(StringListT list,
UIntT position);
Arguments
list
The string list
position
The position of the string to remove (where 0 is the position of the first
string in the list)
Returns
VoidT.
Example
The following code creates a string list and removes the first string from it. It prints the
string that becomes the first string, Lachesis.
. . .
StringListT list;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
F_StrListAppend(list, (StringT)"Lachesis");
F_StrListRemove(list, (UIntT)0);
F_Printf(NULL, "%s", F_StrListFirst(list));
. . .
F_StrListSetString()
F_StrListSetString() copies and sets a specified string at a specified location in
a string list.
FDK Programmer’s Reference 697
3
FDK Function Reference
F_StrListSort()
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
ErrorT F_StrListSetString(StringListT list,
ConStringT s,
UIntT position);
Arguments
list
The string list
s
The string to set in the string list
position
The position at which to set the string specified by s (where 0 is the
position of the first string in the list)
Returns
FdeSuccess if it succeeds, or a nonzero value if there isn’t enough memory or the
specified position is out of bounds.
Example
The following code creates a string list and sets the second string in it. It prints the string
Clothos Atropos.
. . .
StringListT list;
IntT i;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
F_StrListAppend(list, (StringT)"Lachesis");
F_StrListSetString(list, (StringT)"Atropos", (UIntT)1);
for(i=0; i < F_StrListLen(list); i++)
F_Printf(NULL, "%s ", F_StrListGet(list, i));
. . .
F_StrListSort()
F_StrListSort() performs a destructive sort of a string list using a quick sort
algorithm with a specified comparison function.
698
FDK Programmer’s Reference
F_StrListSort()
...
FDK Function Reference
Synopsis
#include "fdetypes.h"
#include "fstrlist.h"
. . .
VoidT F_StrListSort(StringListT list,
NativeIntT (*fn) (ConStringT *, ConStringT *));
Arguments
list
The string list
fn
The comparison function used to sort the string list
The comparison function should have the following prototype:
NativeIntT fn(ConStringT *s1,
ConStringT *s2);
The comparison function should return 0 if s1 and s2 are equal, a negative value
when s1 is less than s2, and a positive value when s1 is greater than s2.
F_StrListSort() sorts the elements of the specified list in ascending order.
Returns
VoidT.
FDK Programmer’s Reference 699
3
FDK Function Reference
F_StrNew()
Example
The following code creates a string list and sorts it. It prints the string Atropos
Clothos Lachesis.
. . .
NativeIntT fn(ConSringT *s1, ConSringT *s2)
{
return (F_StrCmp(*s1, *s2));
}
. . .
StringListT list;
IntT i;
list = F_StrListNew((UIntT)3, (UIntT)1);
F_StrListAppend(list, (StringT)"Clothos");
F_StrListAppend(list, (StringT)"Lachesis");
F_StrListAppend(list, (StringT)"Atropos");
F_StrListSort(list, &fn);
for(i=0; i < F_StrListLen(list); i++)
F_Printf(NULL, "%s ", F_StrListGet(list, i));
. . .
F_StrNew()
F_StrNew() allocates a string using F_Calloc().
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
StringT F_StrNew(UIntT len);
Arguments
len
The length of the string to create
Returns
The allocated string, or NULL if it fails. When you are finished with the returned string,
use F_Free() to free it. For more information, see “F_Free()” on page 567.
700
FDK Programmer’s Reference
F_StrPrefix()
...
FDK Function Reference
Example
The following code allocates memory for a 19-character string to s, and then frees the
memory:
. . .
StringT s;
s = F_StrNew((IntT)20);
if(s != NULL) F_Free(s);
. . .
See also
“F_StrCopyString()” on page 665, “F_StrCpy()” on page 666, and “F_Free()” on
page 567.
F_StrPrefix()
F_StrPrefix() determines whether s2 is a prefix of s1.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
BoolT F_StrPrefix(ConStringT s1,
ConStringT s2);
Arguments
s1
The string in which to search for s2
s2
The string to search s1 for
Returns
True if s2 is a prefix of s1, or False if it isn’t.
Example
The following code prints the string The second string is a prefix of the
first:
. . .
if(F_StrPrefix((StringT)"an elk", (StringT)"an e"))
F_Printf(NULL,
"The second string is a prefix of the first\n");
. . .
FDK Programmer’s Reference 701
3
FDK Function Reference
F_StrPrefixN()
F_StrPrefixN()
F_StrPrefixN determines whether a specified portion of a string is a prefix of
another string.
..............................................................................
The length to compare is calculated in bytes, not characters. This is
important if the string contains double-byte characters.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
BoolT F_StrPrefixN(ConStringT s1,
ConStringT s2,
UIntT n);
Arguments
s1
A string
s2
A string containing the characters to test as a prefix of s1
n
The number of bytes in s2 to test as a prefix of s1
Returns
True if n characters of s2 are a prefix of s1, or False if they aren’t.
Example
The following code prints the string The second string is a prefix of the
first:
. . .
if(F_StrPrefixN((StringT)"an elk",(StringT)"anne elk",(IntT) 2))
F_Printf(NULL,
"The second string is a prefix of the first\n");
. . .
F_StrRChr()
F_StrRChr() returns a pointer to the first occurrence of a character in a string,
starting from the end of the string.
702
FDK Programmer’s Reference
F_StrRChrEnc()
...
FDK Function Reference
..............................................................................
This function only works with characters that use the FrameRoman
encoding. This is important if your document includes Asian text.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
StringT F_StrRChr(StringT s,
PUCharT c);
Arguments
s
The string to search for c
c
The character to search for in s
Returns
A pointer to the first occurrence of c in s, starting from the end of the string, or NULL
if c does not occur in s.
Example
The following code prints the string otafar:
. . .
StringT s, string;
s = F_StrCopyString("Apollo Shootafar");
string = F_StrRChr(s, 'o');
F_Printf(NULL, "%s\n", string);
. . .
F_StrRChrEnc()
F_StrRChrEnc() returns a pointer to the first occurrence in a string, starting from the
end of the string, of a double-byte character of the specified encoding.
Synopsis
#include "fencode.h"
. . .
StringT F_StrRChrEnc(ConStringT s,
UCharT first,
UCharT second,
FontEncIdT feId);
FDK Programmer’s Reference 703
3
FDK Function Reference
F_StrRChrEnc()
Arguments
s
The string to search
first
The first byte of the character to search s for
second
The second byte of the character to search s for
feId
The ID of the font encoding to check against
Returns
A pointer to the last occurrence in s of the double byte character represented by first
and second. Returns NULL if such a character does not occur in s.
Example
The following code searches from the end of s and returns a string beginning with the
Japanese character 89C3. Also see the example for “F_StrRChr()” on page 702:
. . .
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
StringT s, string;
/* Assuming a string of double-byte chars in s... */
string = F_StrRChrEnc(s, \x89, \xC3, feId);
. . .
704
FDK Programmer’s Reference
F_StrReverse()
...
FDK Function Reference
F_StrReverse()
F_StrReverse() reverses a specified number of characters of a string.
..............................................................................
This function only works with characters that use the FrameRoman
encoding. This is important if your document includes Asian text.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
VoidT F_StrReverse(StringT s,
IntT l);
Arguments
s
The string to reverse.
l
The number of characters to reverse. If l is greater than the length of the
string, F_StrReverse() reverses all the characters in the string.
Returns
VoidT.
Example
The following code prints the string ablE was I ere I saw elbA:
. . .
StringT s;
s = F_StrCopyString("Able was I ere I saw Elba");
F_StrReverse(s, 100);
F_Printf(NULL, "%s\n", s);
. . .
F_StrReverseUTF8Char ()
Reverses a specified number of characters in a UTF-8 string.
..............................................................................
This reverses the string code-point-by-code-point (rather than byte-bybyte). However, this still results in absurdities like the diaeresis coming before 'a'when
I M P O RTA NT:
FDK Programmer’s Reference 705
3
FDK Function Reference
F_StrReverseUTF8Char ()
it was after 'a' in the original string. Thus äo will become öa if ä has been stored as 'a'
followed by the diaresis.
..............................................................................
Synopsis
#include "fencode.h"
. . .
VoidT F_StrReverseUTF8Char (StringT s, IntT l);
Arguments
s
The string to reverse.
l
The number of characters to reverse. If l is greater than the length of the
string, F_StrReverse() reverses all the characters in the string.
Returns
VoidT
706
FDK Programmer’s Reference
F_StrReverseUTF8Char ()
...
FDK Function Reference
Example
The following code prints the string २३४ + ३२४ = 558
StringT devanagiri_four="\xE0\xA5\xAA";
StringT devanagiri_three="\xE0\xA5\xA9";
StringT devanagiri_two ="\xE0\xA5\xA8";
UCharT n_234[256];
UCharT n_324[256];
IntT res;
FontEncIdT feId = F_FdeInitFontEncs((ConStringT)"UTF-8");
F_StrTruncEnc(n_234,0,feId);
F_StrTruncEnc(n_324,0,feId);
F_StrCpy(n_234, devanagiri_two);
F_StrCat(n_234, devanagiri_three);
F_StrCat(n_234, devanagiri_four);
F_StrCpy(n_324,n_234);
F_StrReverseUTF8Char(n_324,2);
res = F_StrAlphaToIntUnicode(n_234) +
F_StrAlphaToIntUnicode(n_324);
F_Printf(NULL,"%s + %s = %d", n_234, n_324, res);
...
FDK Programmer’s Reference 707
3
FDK Function Reference
F_StrStrip()
F_StrStrip()
F_StrStrip() removes a specified set of characters from a string.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
VoidT F_StrStrip(StringT s,
ConStringT strip);
Arguments
s
The string from which to remove characters
strip
The characters to remove from s
Returns
VoidT.
Example
The following code prints the string Wrttn Hbrw mts shrt vwls:
. . .
StringT s;
s = F_StrCopyString("Written Hebrew omits short vowels.");
F_StrStrip(s, (StringT) "aeiouy");
F_Printf(NULL, "%s\n", s);
. . .
F_StrStripLeadingSpaces()
F_StrStripLeadingSpaces() removes the leading spaces in a string.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
VoidT F_StrStripLeadingSpaces(StringT s);
708
FDK Programmer’s Reference
F_StrStripTrailingSpaces()
...
FDK Function Reference
Arguments
s
The string from which to remove leading spaces
Returns
VoidT.
Example
The following code prints the string leading spaces:
. . .
StringT s;
s = F_StrCopyString("
leading spaces");
F_StrStripLeadingSpaces(s);
F_Printf(NULL, "%s\n", s);
. . .
F_StrStripTrailingSpaces()
F_StrStripTrailingSpaces() removes the trailing spaces in a string.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
VoidT F_StrStripTrailingSpaces(StringT s);
Arguments
s
The string from which to remove trailing spaces
Returns
VoidT.
FDK Programmer’s Reference 709
3
FDK Function Reference
F_StrStripUTF8Chars ()
Example
The following code prints the string trailing spaces:
. . .
StringT s;
s = F_StrCopyString("trailing spaces
F_StrStripTrailingSpaces(s);
F_Printf(NULL, "%s\n", s);
. . .
");
F_StrStripUTF8Chars ()
Removes a specified set of UTF-8 characters from a UTF-8 string
..............................................................................
This function doesn’t perform canonical or compatibility
normalizations. Because it works on a code-point-by-code-point basis, it treats 'a'
followed by 'diaeresis' as separate entities despite their forming the grapheme cluster ä.
I M P O RTA NT:
..............................................................................
If "äo" must be stripped from "göat" and ä (and ö) are stored as 'a' (and 'o') followed by
'diaeresis' , the result is "gt" because 'a', 'diaeresis' and 'o' are all removed from the string.
If, however, ö is stored in its composed form, the result is "göt". If both ö and ä are
stored in their composed form, the result is "göat".
Synopsis
#include "fencode.h"
. . .
VoidT F_StrStripUTF8Chars (StringT s, ConStringT strip);
Arguments
s
The string from which to remove characters
strip
The characters to remove from s
Returns
VoidT
710
FDK Programmer’s Reference
F_StrStripUTF8String ()
...
FDK Function Reference
Example
The following code prints the string Have you göt a göat?
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
StringT orig = F_StrCopyString("g\xC3\xB6\xC1\x74");
StringT strip = "a\xCC\x88\x6F"; /* CC 88 is diaeresis */
UCharT cop[256];
cop[0]=0;
F_StrCpy(cop,orig);
F_StrStripUTF8Chars(cop, strip);
F_Printf(NULL, "Have you %s a %s?\n", cop, orig);
. . .
F_StrStripUTF8String ()
Removes all occurrences of one string from another
..............................................................................
Because this function doesn’t perform canonical or compatibility
normalizations, it treats 'a' followed by 'diaeresis' as different from the precomposed
form ä (code point 0x00E4).
I M P O RTA NT:
..............................................................................
Removing "hel" from "hehello" results in "helo" and not "o". That is, this performs only
one pass.
Synopsis
#include "fencode.h"
. . .
VoidT F_StrStripUTF8String (StringT s, ConStringT strip);
Arguments
s
A string
strip
The string whose occurrence must be removed from s
Returns
VoidT
FDK Programmer’s Reference
711
3
FDK Function Reference
F_StrStripUTF8Strings ()
Example
The following code prints the string helo
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
StringT orig = F_StrCopyString("hehello");
StringT strip = "hel";
F_StrStripUTF8Chars(orig, strip);
F_Printf(NULL, orig);
. . .
F_StrStripUTF8Strings ()
Removes all occurrences of one set of strings from another
..............................................................................
Because this function doesn’t perform canonical or compatibility
normalizations, it treats 'a' followed by 'diaeresis' as different from the precomposed
form ä (code point 0x00E4).
I M P O RTA NT:
..............................................................................
Synopsis
#include "fencode.h"
. . .
VoidT F_StrStripUTF8Strings (StringT s, StringListT sstrip);
Arguments
s
A string
sstrip
The list of strings whose occurrences must be removed from s
Returns
VoidT
Example
The following code prints the string Vision is a daydream. Action is a nightmare.
712
FDK Programmer’s Reference
F_StrSubString()
...
FDK Function Reference
. . .
F_FdeInitFontEncs((ConStringT)"UTF-8");
StringT orig = F_StrCopyString("Vision without action is a
daydream.
Action without vision is a nightmare.");
StringListT list;
list = F_StrListNew((UIntT)1, (UIntT)1);
F_StrListAppend(list, (StringT)"action ");
F_StrListAppend(list, (StringT)"without ");
F_StrListAppend(list, (StringT)"vision ");
F_StrStripUTF8Strings(orig, list);
F_Printf(NULL, orig);
. . .
F_StrSubString()
F_StrSubString() finds the first occurrence of a specified string in another string.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
IntT F_StrSubString(ConStringT s1,
ConStringT s2);
Arguments
s1
The string in which to search for s2
s2
The string to search for
Returns
The index of the first occurrence of s2 in s1, or -1 if s2 doesn’t occur in s1.
FDK Programmer’s Reference 713
3
FDK Function Reference
F_StrSuffix()
Example
The following code prints the string Earth found at the 9th char:
. . .
StringT s1;
IntT i;
s1 = F_StrCopyString("Poseidon Earthshaker");
i = F_StrSubString(s1, (StringT) "Earth");
if(i != -1) F_Printf(NULL, "Earth found at the %dth char\n", i);
. . .
F_StrSuffix()
F_StrSuffix() determines whether a specified string is a suffix of another string.
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
BoolT F_StrSuffix(ConStringT s1,
ConStringT s2);
Arguments
s1
The string to test for the suffix s2
s2
The string to test as a suffix of s1
Returns
True if s2 is a suffix of s1, or False if it isn’t.
Example
The following code prints the string The second string is a suffix of the
first:
. . .
if(F_StrSuffix((StringT)"an elk", (StringT)"elk"))
F_Printf(NULL,
"The second string is a suffix of the first\n");
. . .
714
FDK Programmer’s Reference
F_StrTok()
...
FDK Function Reference
F_StrTok()
F_StrTok() is equivalent to strtok(). It returns the text tokens in a specified
string, separated by occurrences of any combination of one or more of the characters in
another string.
..............................................................................
This function only works with characters that use the FrameRoman
encoding. This is important if your document includes Asian text.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
StringT F_StrTok(StringT s1,
ConStringT s2);
Arguments
s1
The string to parse for text tokens
s2
A string containing characters used to separate the text tokens
Returns
The first time you call F_StrTok(), it returns a pointer to the beginning of the first
token in s1 and overwrites s1 with NULL at the end of the token. F_StrTok()
keeps track of its position in the string after each call so that when you call it again with
s1 set to NULL, it starts immediately after the previous token. The separator string s2
can be different for each call. When it has passed all the tokens in s1, F_StrTok()
returns NULL.
FDK Programmer’s Reference 715
3
FDK Function Reference
F_StrTokUTF8 ()
Example
The following code prints the string The total is 14:
. . .
StringT s, s1;
IntT i = 0;
s1 = F_StrCopyString((StringT)"4 plus 7 p 3");
s = F_StrTok(s1, (StringT)" plus ");
while (s != NULL)
{
i += F_StrAlphaToInt(s);
s = F_StrTok(NULL, (StringT)" plus ");
}
F_Printf(NULL, "The total is %d\n", i);
. . .
F_StrTokUTF8 ()
Is similar to F_StrTok except that it considers UTF-8 characters and not only single
bytes. It returns the text tokens in a specified UTF-8 string, separated by occurrences of
any combination of one or more of the UTF-8 characters in another string.
Synopsis
#include "fencode.h"
. . .
StringT F_StrTokUTF8 (StringT s1, ConStringT s2);
Arguments
s1
The string to parse for text tokens
s2
A string containing characters used to separate the text tokens
Returns
The first time you call F_StrTokUTF8(), it returns a pointer to the beginning of the first
token in s1 and overwrites s1 with NULL at the end of the token. F_StrTokUTF8()
keeps track of its position in the string after each call so that when you call it again with
s1 set to NULL, it starts immediately after the previous token. The separator string s2
can be different for each call. When it has passed all the tokens in s1,
F_StrTokUTF8() returns NULL.
716
FDK Programmer’s Reference
F_StrTrunc()
...
FDK Function Reference
Example
The following code prints the string 4 plus २ p 3 + 10 ⊕ 23 = 42
. . .
StringT s, s1,cop, tokens;
IntT i = 0;
F_FdeInitFontEncs("UTF-8");
s1 = F_StrCopyString("4 plus \xE0\xA5\xA8 p 3 + 10 \xE2\x8A\x95
23");
cop = F_StrCopyString(s1);
tokens = " +plus\xE2\x8A\x95";
s = F_StrTokUTF8(s1, tokens);
while (s != NULL)
{
i += F_StrAlphaToIntUnicode(s);
s = F_StrTok(NULL, tokens);
}
F_Printf(NULL, "%s = %d",cop,i);
...
F_StrTrunc()
F_StrTrunc() truncates a string at a specified position. It overwrites the character at
the specified position with '\0'.
..............................................................................
This function only works with characters that use the FrameRoman
encoding. If your document includes Asian text, use F_StrTruncEnc().
I M P O RTA NT:
..............................................................................
Synopsis
#include "fdetypes.h"
#include "fstrings.h"
. . .
VoidT StringT F_StrTrunc(StringT s,
UIntT n);
FDK Programmer’s Reference 717
3
FDK Function Reference
F_StrTruncEnc()
Arguments
s
The string to truncate
n
The position at which to truncate s
..............................................................................
If the value for n is greater than the length of the string, you will
overwrite an unspecified location in memory with a NULL byte.
I M P O RTA NT:
..............................................................................
Returns
VoidT.
Example
The following code prints the string wine:
. . .
StringT s;
s = F_StrCopyString("wine-dark sea");
F_StrTrunc(s, 4);
F_Printf(NULL, "%s\n", s);
. . .
F_StrTruncEnc()
F_StrTruncEnc() truncates a string at a specified position. It overwrites the
character at the specified position with '\0'.
..............................................................................
The position is specified in terms of bytes and not characters. In a string
of three double-byte characters, to truncate after the second character you would specify
a value of 4 for n.
I M P O RTA NT:
..............................................................................
Synopsis
#include "fencode.h"
. . .
VoidT F_StrTruncEnc(StringT s,
UIntT n,
FontEncIdT feId);
718
FDK Programmer’s Reference
F_TextEncToFontEnc()
...
FDK Function Reference
Arguments
s
The string to truncate
n
The position at which to truncate s
feId
The ID of the font in string s
..............................................................................
If the value for n is greater than the length of the string, you will
overwrite an unspecified location in memory with a NULL byte.
I M P O RTA NT:
..............................................................................
Returns
VoidT.
Example
The following code prints the characters in the first 12 bytes of a double-byte string.
Also see the example for “F_StrTrunc()” on page 717:
. . .
StringT s;
FontEncIdT feId = F_FontEncId((ConStringT) "JISX0208.ShiftJIS");
. . .
/* Assuming s is a string of double-byte characters... */
F_StrTruncEnc(s, 12, feId);
F_Printf(NULL, "%s\n", s);
. . .
F_TextEncToFontEnc()
Converts from FTextEncodingT to FontEncIdT
NOTE: This function has different behaviors for Compatibility Mode and Unicode
Mode. In Unicode Mode, if no match is found, UTF-8 is the default output. In
Compatibility Mode, the default output is FrameRoman.
Synopsis
#include "fencode.h"
. . .
FontEncIdT F_TextEncToFontEnc (FTextEncodingT textEnc);
FDK Programmer’s Reference 719
3
FDK Function Reference
F_TextEncToFontEnc()
Arguments
textEnc
The text encoding to convert
Returns
The font encoding corresponding to the text encoding
Example
The following code prints "JISX0208.ShiftJIS"
#include "fencode.h"
. . .
StringT fname =
F_FontEncName(F_TextEncToFontEnc(F_EncShiftJIS));
F_FdeInitFontEncs((ConStringT) "UTF-8");
F_Printf(NULL, fname);
...
720
FDK Programmer’s Reference
F_UnlockHandle()
...
FDK Function Reference
F_UnlockHandle()
F_UnlockHandle() unlocks a specified handle and decreases the lock count. The
handle remains locked if the lock count is greater than zero. After you unlock the
handle, the memory associated with it can be relocated again if necessary. You can also
use F_FreeHandle() and F_ReallocHandle() on the handle.
Synopsis
#include "fdetypes.h"
#include "fmemory.h"
. . .
IntT F_UnlockHandle(HandleT handle);
Arguments
handle
The handle to unlock
Returns
The lock count of the handle after F_UnlockHandle() unlocks it.
Example
The following code unlocks a handle:
. . .
HandleT hndl = NULL;
if(F_UnlockHandle(hndl) != 0)
F_Printf(NULL, "Handle is still locked.\n");
. . .
See also
“F_AllocHandle()” on page 62 and “F_LockHandle()” on page 585.
F_UTF16CharSize()
Returns the number of UTF-16 code units taken by the UTF-16 character based on the
first code unit of the character.
UTF-16 encoding allows you to determine the number of code units a character
occupies by looking at the first code unit of the character. A UTF-16 code unit is 2
bytes. A Unicode character in UTF-16 occupies 1 to 2 UTF-16 code units.
FDK Programmer’s Reference 721
3
FDK Function Reference
F_UTF16NextChar()
Synopsis
#include "fencode.h"
. . .
IntT F_UTF16CharSize (const UChar16T c);
Arguments
c
The first code unit of the character whose size must be
found
Returns
The number of code units occupied by the UTF-16 character (1-2)
Example
The following code prints ४ occupies 1 UTF-16 code units
#include "fencode.h"
. . .
StringT devanagiri_four="\xE0\xA5\xAA";
UChar16T devanagiri_four_U16[2];
IntT n;
F_FdeInitFontEncs((ConStringT)"UTF-8");
F_CharUTF8ToUTF16(devanagiri_four, devanagiri_four_U16);
n = F_UTF16CharSize(*devanagiri_four_U16);
F_Printf("%C occupies %d UTF-16 code units", devanagiri_four,
n);
...
F_UTF16NextChar()
Increments the UTF-16 character pointer to the next character in the string.
You must use this function to traverse a UTF-16 string. Using cp++ to parse a string,
where cp is a character pointer (UChar16T pointer), is incorrect for UTF-16 because it
traverses the string on a code-unit-by-code-unit basis, rather than a character-bycharacter basis. This function also returns the incremented pointer.
722
FDK Programmer’s Reference
F_UTF8CharSize()
...
FDK Function Reference
Synopsis
#include "fencode.h"
. . .
const UChar16T * F_UTF16NextChar (const UChar16T **c);
Arguments
c
Pointer to the character pointer that must be incremented
Returns
The incremented character pointer.
Example
The following code prints Skipping 2 characters we get г
#include "fencode.h"
. . .
UCharT russian_char_U8[4];
UChar16T russian_U16[]={0x0411,0x043E,0x0433,0x0000};
UChar16T *t=russian_U16;
F_FdeInitFontEncs((ConStringT)"UTF-8");
F_UTF16NextChar(&t);
F_UTF16NextChar(&t);
F_CharUTF16ToUTF8(t,russian_char_U8);
F_Printf(NULL, "Skipping 2 characters we get %C",
russian_char_U8);
...
F_UTF8CharSize()
Returns the number of bytes taken by the UTF-8 character based on its first byte.
UTF-8 encoding allows you to determine the number of bytes a character occupies by
lookingat the first byte of the character. A Unicode character in UTF-8 occupies 1 to 4
bytes .
FDK Programmer’s Reference 723
3
FDK Function Reference
F_UTF8NextChar()
Synopsis
#include "fencode.h"
. . .
IntT F_UTF8CharSize (const UCharT c);
Arguments
c
The first byte of the character whose size must be found
Returns
The number of bytes occupied by the UTF-8 character (1-4)
Example
The following code prints ४ occupies 3 bytes
#include "fencode.h"
. . .
StringT devanagiri_four="\xE0\xA5\xAA";
IntT n;
F_FdeInitFontEncs((ConStringT)"UTF-8");
n = F_UTF8CharSize(*devanagiri_four);
F_Printf("%C occupies %d bytes", devanagiri_four, n);
. . .
F_UTF8NextChar()
Increments the UTF-8 character pointer to the next character in the string.
You must use this function to traverse a UTF-8 string. Using cp++ to parse a string,
where cp is a character pointer, is incorrect for UTF-8 because it traverses the string on
a byte-by-byte basis, rather than a character-by-character basis. This function also
returns the incremented pointer.
Synopsis
#include "fencode.h"
. . .
const UCharT * F_UTF8NextChar (const UCharT **c);
724
FDK Programmer’s Reference
F_UTF8NextChar()
...
FDK Function Reference
Arguments
c
Pointer to the character pointer that must be incremented
Returns
The incremented character pointer.
Example
The following code prints Бог-Б-о-г
#include "fencode.h"
. . .
StringT russian="\xD0\x91\xD0\xBE\xD0\xB3";
UCharT *t=russian;
F_FdeInitFontEncs((ConStringT)"UTF-8");
F_Printf(NULL, russian);
while(*t)
{
F_Printf(NULL,"-%C",t);
F_UTF8NextChar(&t);
}
...
FDK Programmer’s Reference 725
3
FDK Function Reference
F_Warning()
F_Warning()
F_Warning() reports a specified warning message to the Frame console.
Synopsis
#include "fdetypes.h"
#include "fprogs.h"
. . .
VoidT F_Warning(StringT msg);
Arguments
msg
The warning message to display
Returns
VoidT.
Example
The following code prints a warning:
. . .
F_Warning("A Warning.\n");
. . .
F_WriteBytes()
F_WriteBytes() writes a specified number of bytes from a pointer to a channel. It
swaps bytes if you have specified a byte order with F_SetByteOrder() or
F_ResetByteOrder() and the byte order is different from the current platform’s byte
order.
Synopsis
#include "fdetypes.h"
#include "fioutils.h"
. . .
IntT F_WriteBytes(PtrT ptr,
IntT numBytes,
ChannelT channel);
726
FDK Programmer’s Reference
F_WriteLongs()
...
FDK Function Reference
Arguments
ptr
A pointer to the bytes to write
numBytes
The number of bytes to write
channel
The channel to which to write the bytes
Returns
The number of bytes actually written.
Example
The following code writes the string Every good boy deserves fudge to a file
located in the default directory:
. . .
static UCharT buf[] = "Every good boy deserves fudge";
ChannelT chan;
FilePathT *path;
path = F_PathNameToFilePath((StringT)"test.txt",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"w")) == NULL) return;
F_WriteBytes((PtrT)buf, F_StrLen(buf), chan);
. . .
F_WriteLongs()
F_WriteLongs() writes a specified number of longs (4 bytes) from a pointer to a
channel. It swaps bytes if you have specified a byte order with F_SetByteOrder()
or F_ResetByteOrder() and the byte order is different from the current platform’s
byte order.
Synopsis
#include "fdetypes.h"
#include "fioutils.h"
. . .
IntT F_WriteLongs(PtrT ptr,
IntT num,
ChannelT channel);
FDK Programmer’s Reference 727
3
FDK Function Reference
F_WriteShorts()
Arguments
ptr
A pointer to the longs to write
num
The number of longs to write
channel
The channel to which to write the longs
Returns
The number of longs actually written.
Example
The following code writes the long integers 65535, 5678, and 90123 to a file located in
the default directory:
. . .
IntT buf[] = {65535, 5678, 90123};
ChannelT chan;
FilePathT *path;
path = F_PathNameToFilePath((StringT)"test.dat",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"w")) == NULL) return;
F_WriteLongs((PtrT)buf, 3, chan);
. . .
F_WriteShorts()
F_WriteShorts() writes a specified number of shorts (2 bytes) from a pointer to a
channel. It swaps bytes if you have specified a byte order with F_SetByteOrder()
or F_ResetByteOrder() and the byte order is different from the current platform’s
byte order.
Synopsis
#include "fdetypes.h"
#include "fioutils.h"
. . .
IntT F_WriteShorts(PtrT ptr,
IntT n,
ChannelT channel);
728
FDK Programmer’s Reference
...
FDK Function Reference
Arguments
ptr
A pointer to the shorts to write
n
The number of shorts to write
channel
The channel to which to write the shorts
Returns
The number of shorts actually written.
Example
The following code writes the short integers 6, 34, and -87 to a file in the default
directory:
. . .
ShortT buf[] = {6, 34, -87};
ChannelT chan;
FilePathT *path;
path = F_PathNameToFilePath((StringT)"test.dat",
NULL, FDefaultPath);
if((chan = F_ChannelOpen(path,"w")) == NULL) return;
F_WriteShorts((PtrT)buf, 3, chan);
. . .
FDK Programmer’s Reference 729
3
730
FDK Function Reference
FDK Programmer’s Reference
4
Object Reference
..................................
.....
4
This chapter lists API objects and their properties. For a detailed description of how the
API represents things in FrameMaker products, see Part II, “Frame Product
Architecture,” in the FDK Programmer’s Guide.
Read-only properties are indicated with a dagger (†). All other properties are read/write.
If there is a specific range of valid values for a property, it is indicated in parentheses in
the Meaning column. If a property must specify an ID for a particular type of object, the
object type is indicated in parentheses.
Books
The API uses FO_Book objects to represent books and FO_BookComponent objects
to represent book components.
FO_Book
An FO_Book object represents a FrameMaker product book. FO_Book objects have
the following properties.
Book general properties
The following FO_Book properties apply to all FrameMaker product books.
Type
Meaning
FP_BookDontUpdateReferences
IntT
False if the FrameMaker
product updates crossreferences when it opens the
book.
FP_BookIsModified†
IntT
True if the book has been
modified.
FP_BookIsSelected
IntT
True if the book icon in the
book window is selected.
Property
FDK Programmer’s Reference 731
4
Object Reference
Books
Type
Meaning
FP_FirstComponentInBook
F_ObjHandleT
First component
in the book
(FO_BookComponent ID).
FP_FirstSelectedComponent
InBook
F_ObjHandleT
First selected component in the
book (FO_BookComponent
ID).
FP_IsIconified
IntT
True if the book window is
iconified .
FP_IsInFront
IntT
True if the book window is in
front of other windows in the
FrameMaker product session.
FP_IsOnScreen
IntT
True if the book is visible on
the screen. Note that this
property is always True for
books, and setting it to False
has no effect.
FP_Label
StringT
The title in the book window
title bar.
FP_Name
StringT
Pathname of the book.
FP_NextOpenBookInSession†
F_ObjHandleT
Next open book in
session’s list of open
books (FO_Book ID).
FP_StatusLine
StringT
String that appears in the book
status bar. In versions before
6.0, this property always
returned an empty string; In
versions 6.0 and later, it returns
the current status string.
Property
If you set string content to
FP_StatusLine (a string
other than ""), the string will
remain in the status bar until
you reset it.
To reset FP_StatusLine so
the FrameMaker product
automatically updates the
status line with normal status
information, set it to an empty
string ("").
FP_ScreenHeight
732
FDK Programmer’s Reference
IntT
Height of the book window in
pixels.
Books
...
Object Reference
Type
Meaning
FP_ScreenWidth
IntT
Width of the book window in
pixels.
FP_ScreenX
IntT
The offset of the book window
in pixels from the left side of
the screen (or the left of the
FrameMaker product
application window on
Windows).
Property
If you set a value that would
result in the book window
being off the screen, that value
is ignored and the old value is
retained.
FP_ScreenY
IntT
The offset of the book window
in pixels from the top of the
screen (or the top of the
FrameMaker product
application window on
Windows).
If you set a value that would
result in the book window
being off the screen, that value
is ignored and the old value is
retained.
FP_ShowElementDescriptiveNa
mes
IntT
If true, then show element
descriptive names in element
catalog, as specified in element
definition.
FP_TypeOfDisplayText
IntT
The type of text snippet to
display for each icon in the
book window:
FV_BK_FILENAME displays
the book component’s filename
FV_BK_TEXT displays the first
paragraph of the component’s
first flow
FP_UseInitialStructureOfAut
oInsertedElements
IntT
If true, then auto-insertion rules
will be processed recursively.
For example, if an element is
inserted automatically, and
auto-insertion rules exist for
this element in the element
definition, then those rules will
also be processed.
FDK Programmer’s Reference 733
4
Object Reference
Books
Type
Meaning
FP_XmlDocType
StringT
The DOCTYPE parameter rom
the source XML.
FP_XmlEncoding
StringT
The encoding parameter of
the XML Declaration for the
Property
source XML. The string is
empty if no encoding is
specified. If this property is set,
the XML Declaration will
contain the encoding parameter
with this value on Save As
XML. For information about
the encoding that FrameMaker
supports with a default
installation, see the online
manual, the Structure
Application Developer’s Guide.
FP_XmlFileEncoding
StringT
The encoding that was
detected for the source XML
book. If no encoding was
specified for the source
XML, FP_XmlEncoding
will be an empty string. In that
case, if this stringis set it will
determine the encoding to use
when saving as XML. If
P_XmlEncoding has a
value, this string may be empty.
For information about the
encoding that FrameMaker
supports with a default
installation, see the online
manual, the Structure
Application Developer’s Guide.
FP_XmlPublicId
734
FDK Programmer’s Reference
StringT
The DOCTYPE public
identifier for the source XML
document
Books
Property
FP_XmlStandAlone
...
Object Reference
Type
Meaning
IntT
An integer that specifies the
XML standalone parameter
for the XML document that
was the source of this
document. Can be one of

FV_XML_STANDALONE_Y
ES

FV_XML_STANDALONE_N
O

FV_XML_STANDALONE_N
A
The standalone parameter is
declared in the XML
Declaration. For a file with no
XML Declaration, the value is
FV_XML_STANDALONE_NODE
C. For an XML Declaration
with no standalone parameter,
this value is
FV_XML_STANDALONE_NO
NE.
FP_XmlStyleSheet
StringT
The XML stylesheet
processing instruction to write
out to XML when saving the
book as XML. The FDK does
not verify that you use correct
syntax in this string. The string
you set should not include the
PI delimiters, <? and ?>. For
example, the string you supply
for my.css would be:
"type=\"text\\css\"
href=\"my.css\""
Only use this string to set a
specific stylesheet
specification.
F_ApiGetString() always
returns NULL for this
parameter. To get the list of
stylesheet specifications
associated with a book, use
FP_XmlStyleSheetList,
below.
FDK Programmer’s Reference 735
4
The DOCTYPE system identifier for the source XML document.
Books
Property
FP_XmlStyleSheetList
Type
Meaning
F_StringsT
A list of stylesheet processing
instructions for the current
document. One document can
have more than one stylesheet
specification associated with it.
The FDK does not verify that
you use correct syntax in these
strings.
The strings should not include
the PI delimiters, <? and ?>.
For example, the string you
supply for my.css would be:
"type=\"text\\css\"hre
f=\"my.css\""
Setting a list to
FP_XmlStyleSheetList
completely overwrites the
preceeding list.
FP_XmlSystemId
StringT
4
The
DOCT
YPE
system
identifi
er for
the
source
XML
docume
nt.
736
FDK Programmer’s Reference
Books
Property
FP_XmlUseBOM
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
IntT
Indicates whether a byte order
mark was detected when
opening the source XML. Can
be one of:

FV_XML_USEBOM_NA

FV_XML_USEBOM_NO

FV_XML_USEBOM_YES
When saving as XML, it this is
set to FV_XML_USEBOM_YES,
FrameMaker writes a byte
order mark in the resulting
XML.
FP_XmlVersion
StringT
The XML Version that was
specified in the XML
Declaration when the file was
opened. If no XML version was
specified,
F_ApiGetString() returns
an empty string.
If this string contains an invalid
XML declaration, it will
produce a parsing error when
this document is saved as
XML.
FP_XmlWellFormed
IntT
Indicates whether the source
XML
qualified as well formed. Can
be one of:

FV_XML_WELLFORMED_NA

FV_XML_WELLFORMED_NO

FV_XML_WELLFORMED_YE
S
Book PDF properties
FO_Book objects have the following properties that provide PDF information
PDF Document Info dictionaries The FP_PDFDocInfo property defines a list of
strings to enter in a PDF Document Info dictionary. In PDF, these strings can use
Unicode encoding.
FDK Programmer’s Reference 737
4
The DOCTYPE system identifier for the source XML document.
Books
The FP_PDFDocInfo property defines a list of strings to enter in a PDF Document Info
dictionary. For one dictionary entry, you provide two strings; the first is the entry name,
and the second is the entry content. The entry name can be up to 126 bytes; the entry
content can be up to 32765 characters.
The entry name is a string of bytes within the ASCII range. For non-printable ASCII,
provide Hex codes. To represent a Hex code, precede the code with the “#” character;
for example #24. To represent the “#” character, enter #23. Finally, an entry name may
not include a byte with a value of zero (#00).
The entry content can include Unicode encoding.
For more information on Acrobat specific functionality see the Acrobat Documentation.
PDF properties The following table lists the PDF properties for books.
Type
Meaning
FP_AcrobatBookmarkDisplayTags
IntT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_PDFBookmarkDisplay
Tags instead.
FP_DocAcrobatColumn
ArticleThreads
IntT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_DocPDFNoArticleThreads
instead.
FP_DocAcrobatDefaultsChanged
IntT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_DocPDFefaults
Changed instead.
FP_DocAcrobatElementList
F_Strin
gsT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_DocPDFElementList instead.
FP_DocAcrobatElements
IntT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_DocPDFElements instead.
FP_DocAcrobatNoArticleThreads
IntT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_DocPDFNoArticle
Threads instead.
Property
738
FDK Programmer’s Reference
Books
Property
FP_GenerateAcrobatInfo
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
IntT
True if Generate Adobe Acrobat
Data is on. To generate PDF data, you
must set other document print
properties as follows:

FP_PrintToFile: True

FP_PrintThumbnails:
False

FP_PrintSeps: False

FP_PrintBlankPages:
True

FP_PrintLastSheetFirst:
False

FP_PrintNumCopies: 1

FP_PrintOddPages:
True

FP_PrintEvenPages:
True

FP_PrintScale: 100%
FP_DocPDFColumnArticleThreads
IntT
True if you want separate article
threads for each column, False if
you want separate article threads for
each text frame. Note that
FP_DocPDFNoArticleThread
must be false.
FP_DocPDFDefaultsChanged
IntT
True if the default heuristics for
determining the paragraph level are
disabled.
FP_DocPDFElementList
F_Strin
gsT
List of the element tags and context
labels to include in bookmarks.
FP_DocPDFElementList applies
only to structured documents.
FP_DocPDFElements
IntT
True if elements rather than
paragraphs are used for bookmarks.
FP_DocPDFElements applies only
to structured documents.
FP_DocPDFNoArticleThreads
IntT
True if you do not want article
threads in the resulting PDF.
FDK Programmer’s Reference 739
4
The DOCTYPE system identifier for the source XML document.
Books
Type
Meaning
FP_GenerateAcrobatInfo
IntT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_GeneratePDFInfo instead.
FP_GeneratePDFInfo
IntT
True if Generate Adobe Acrobat
Data is on. To generate PDF data, you
must set other document print
properties as follows
Property
FP_PrintToFile: True
FP_PrintThumbnails: False
FP_PrintSeps: False
FP_PrintBlankPages: True
FP_PrintLastSheetFirst:
False
FP_PrintNumCopies: 1
FP_PrintOddPages: True
FP_PrintEvenPages: True
FP_PrintScale: 100%
FP_PDFBookmark
BoolT
True if the FrameMaker product will
generate bookmarks when saving as
PDF.
FP_PDFBookmarksOpenLevel
IntT
The level of bookmarks to have
expanded when Acrobat opens the
generated PDF document. Can be any
integer, or one of the following
defined values:

FV_PDFBookmarksOpenDefa
ultLevel

FV_PDFBookmarksOpenAllL
evels

FV_PDFBookmarksOpenNone
Level
If you specify an integer greater than
the number of levels in the
Bookmarks Settings,
FV_PDFBookmarksOpenAllLevel
s takes effect.
FP_PDFBookmarkDisplayTagsta
740
FDK Programmer’s Reference
IntT
True if Include Paragraph Tags in
Bookmark Text is on (the paragraph
tag is added before the paragraph text
in each bookmark).
Books
Property
FP_PDFDestsMarked
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
IntT
True if the document has paragraphs
or elements marked via
FP_MarkedForNamed
Destination.
One of two things must happen in
order for this property to be True:
The document was created in version
6.0 or later; the document was opened
in version 6.0 or later, and the PDF
FileSize Optimization client was run
over it to mark all paragraphs or
elements that are targets of hypertext
links.
Normally, your client should not set
this value.
FP_PDFDistillerAbsent†
IntT
A value of 1 indicates that there is
no Acrobat Distiller available.
FP_PDFDocInfo
F_Strin
gsT
A list of strings expressing values to
be set in the PDF Document Info
dictionary when you save the book as
PDF. Each dictionary entry is
expressed as a pair of strings; the first
string expresses the field name, and
the second string expresses the field
value.
FP_PDFEndPage
StringT
The last page of the printing page
range, in the FrameMaker numbering
style
FP_PDFJobOption
StringT
The name of the Distiller Job Options.
If the specified name does not exist in
the Distiller Job Options list, then the
first Distiller Job Option in the list is
used.
FP_PDFJobOptionsAbsent†
IntT
A value of 1 indicates that PDF Job
Options are not available.
FP_PDFOpenPage
StringT
The PDF page number, in the
FrameMaker numbering style, at
which Acrobat opens the generated
PDF document.
FP_PDFPageHeight
MetricT
Page height for the generated PDF.
FP_PDFPageWidth
MetricT
Page width for the generated PDF.
FDK Programmer’s Reference 741
4
The DOCTYPE system identifier for the source XML document.
Books
Type
Meaning
FP_PDFPrintPageRange
IntT
True for generating PDF for the the
specified page range; if False,
FrameMaker generates PDF for the
entire document or book.
FP_PDFSeparateFiles
IntT
True, if a separate PDF file should be
Property
generated for each document in a
book. This property can be set for
single documents, but is ignored in
that case.
FP_PDFStartPage
StringT
The first page of the printing page
range, in the FrameMaker numbering
style.
FP_PDFZoomFactor
MetricT
When FP_PDFZoomType is
FV_PDFZoomNone, the zoom
percentage of the PDF document
(metric 25% to 1600%) If the number
is negative or zero,
FV_PDFZoomDefault takes effect.
FP_PDFZoomType
IntT
The PDF zoom setting with which
Acrobat opens the generated PDF
document. Can be one of:

FV_PDFZoomDefault

FV_PDFZoomPage

FV_PDFZoomWidth

FV_PDFZoomHeight

FV_PDFZoomNone
If a different value is specified,
FV_PDFZoomDefault takes
effect.
742
FDK Programmer’s Reference
Books
Property
FP_PDFRegistrationMarks
FP_PFDAllNamedDestinations
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
IntT
Registration marks for the generated
PDF. May be one of:
IntT

FV_PDFRegistrationMarks
None

FV_PDFRegistrationMarks
Western

FV_PDFRegistrationMarks
Tombo
True if PDF generated from this
book will include Named
Destinations for every paragraph and
structure element in the book. This
results in a larger PDF filesize.
If False, the generated PDF will
have Named Destinations only for
those paragraphs and structure
elements that have already been
marked with
FP_PDFDestinations
Marked = True.
For documents created in versions
earlier than 6.0, True indicates the
user has not used the Optimize PDF
Size command for the document;
normally your client should not
change this value to False.
FDK Programmer’s Reference 743
4
The DOCTYPE system identifier for the source XML document.
Books
Book print properties
FO_Book objects have the following properties that specify how a book is printed.
Type
Meaning
FP_PrintBlankPages
IntT
True if FP_PageRounding allows empty
pages at the end of documents.
FP_PrintCollated
IntT
True if Collate is enabled.
FP_PrintEmulsion
IntT
Direction of print emulsion:
Property
FV_EMUL_UP: Emulsion side up
FV_EMUL_DOWN: Emulsion side down
FP_PrinterName
StringT
Name of printer. Setting FP_PrinterName
on Windows
has no effect. When you set
FP_PrinterName, you can set the printer
to the default printer by specifying NULL.
FP_PrintEvenPages
IntT
True if Print Even-Numbered Pages is
enabled.
FP_PrintFileName
StringT
Filename of file to print to. When you set
FP_PrintFileName, you can set the
filename to the default filename by
specifying NULL.
FP_PrintImaging
IntT
Type of print imaging:
FV_IMG_POSITIVE
FV_IMG_NEGATIVE
744
FP_PrintLastSheetFirst
IntT
True if Last Sheet First is enabled.
FP_PrintLowRes
IntT
True if Low-Resolution is enabled.
FP_PrintNumCopies
IntT
Number of copies to print.
FP_PrintOddPages
IntT
True if Odd-Numbered Pages is enabled.
FP_PrintPaperHeight
MetricT
Height of paper.
FP_PrintPaperWidth
MetricT
Width of paper.
FP_PrintRegistration
Marks
IntT
True if Registration Marks is enabled.
FP_PrintScale
IntT
Scale factor expressed as a percentage of
black (metric 0% to 100%)a
FP_PrintSeps
IntT
True if Print Separations is enabled.
FDK Programmer’s Reference
Books
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
FP_PrintToFile
IntT
True if Print Only to File is enabled.
FP_SkipBlankSeps
IntT
True if Skip Blank Separations is enabled
(don’t print blank color separations).
Property
a. In the API, most percentages are represented as MetricT fractions. For print scale percentages, the
MetricT value 1<<16 or 0x10000 specifies 100%. For more information on MetricT values, see
“MetricT values” on page 962.
Book structure properties
The following FO_Book properties apply only to Structured books.
Type
Meaning/possible values
FP_CustomElementList
F_StringsT
List of tags to display when
FP_ElementCatalogDisplay
is set to FV_ELCAT_CUSTOM.
FP_ElementCatalog†
F_Element
CatalogEntriesT
List of elements in Element
Catalog.
FP_ElementCatalog
Display
IntT
Catalog display options. Show
tags for:
Property
FV_ELCAT_STRICT: valid
children for working start to
finish
FV_ELCAT_LOOSE: valid
children for working in any order
FV_ELCAT_CHILDREN: children
allowed anywhere in parent
FV_ELCAT_ALL: all elements
FV_ELCAT_CUSTOM: the list of
tags specified by
FP_CustomElementList
FP_Element
Selection
F_ElementRangeT
The currently selected element
range in the book.
FDK Programmer’s Reference 745
4
The DOCTYPE system identifier for the source XML document.
Books
Type
Meaning/possible values
FP_FileExtensionOverri
de
StringT
The file extension to use when
saving this document as XML.
Typically, this is used to save
XHTML with a .htm extension
rather than .xml. This setting
should be set in the structure
application for this document’s
DOCTYPE, and that setting may
be a more reliable source for this
value.
FP_FirstFmtChangeList
InDoc
F_ObjHandleT
ID of the first format change list
in the list of format change lists in
the book (FO_FmtChangeList
ID).
FP_FirstElement
DefInDoc†
F_ObjHandleT
ID of first element definition in
book (FO_ElementDef ID).
FP_HighestLevel
Element†
F_ObjHandleT
Highest-level element if the book
is structured (FO_Element ID).
FP_NewElemAttrDisplay
IntT
Specifies attribute display
properties for new elements:
Property
FV_ATTR_DISP_NONE: don’t
display attributes
FV_ATTR_DISP_REQSPEC:
display required and specified
attributes
FV_ATTR_DISP_ALL: display
all attributes
FP_NewElemAttrEditing
IntT
Specifies when the Edit
Attributes dialog box appears for
new elements:
FV_ATTR_EDIT_NONE
FV_ATTR_EDIT_REQUIRED
FV_ATTR_EDIT_ALWAYS
746
FP_SeparateInclusions
IntT
True if inclusions are listed
separately in the element catalog.
FP_SgmlApplication
StringT
Retained for backward
compatibility. Use
FP_StructuredApplication.
FP_UseInitialStructure
IntT
True if Framemaker inserts
initial structure for new elements.
FDK Programmer’s Reference
Books
...
The DOCTYPE system identifier for the source XML document.
Book View Only properties
FO_Book objects have the following view-only properties.
Type
Meaning
FP_BookIsViewOnly
IntT
True if the book is view-only.
FP_ViewOnlyDeadCodes
F_UIntsT
List of F-codes that can’t be
executed in the book
FP_ViewOnlyWinBorders
IntT
True if the book has normal
window borders; False if the
book’s border buttons are
suppressed
FP_ViewOnlyWinPopup
IntT
True if the book window
pop-up menu is available
Property
FO_BookComponent
An FO_BookComponent object represents a book component.
FO_BookComponent objects have the following properties.
..............................................................................
IMPORTANT: If you change the numbering properties of a FO_BookComponent
object, you must then call F_ApiSimpleGenerate() or F_ApiUpdateBook() to
update the document associated with the book component.
..............................................................................
Property
FP_BookComponentIs
Generatable†
Type
Meaning
IntT
True if book component
is a generated file
(FP_BookComponentType
is not set to
FV_BK_NOT_GENERATABLE)
FDK Programmer’s Reference 747
4
The DOCTYPE system identifier for the source XML document.
Books
Property
FP_BookComponentType
Type
Meaning
IntT
Type of book component:
FV_BK_INDEX_AUTHOR: index of
authors
FV_BK_INDEX_FORMATS: index of
formats
FV_BK_INDEX_MARKER: index of
markers
FV_BK_INDEX_REFERENCES:
index of references
FV_BK_INDEX_STAN: standard
index
FV_BK_INDEX_SUBJECT: subject
index
FV_BK_LIST_FIGURE: list of
figures
FV_BK_LIST_FORMATS: list of
formats
FV_BK_LIST_MARKER: list of
markers
FV_BK_LIST_MARKER_ALPHA:
alphabetical list of markers
FV_BK_LIST_PGF: list of
paragraphs
FV_BK_LIST_PGF_ALPHA:
alphabetical list of paragraphs
FV_BK_LIST_REFERENCES: list of
references
FV_BK_LIST_TABLE: list of tables
FV_BK_NOT_GENERATABLE: book
component is not a
generated file
FV_BK_TOC: table of contents
FP_BookParent†
748
FDK Programmer’s Reference
F_ObjHandleT
Book that contains the component
(FO_Book ID)
Books
Property
FP_ChapNumCompute
Method
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
IntT
The component document’s chapter
numbering type:
FV_NUM_CONTINUE: Continue the
numbering from the previous chapter.
FV_NUM_RESTART: Use the value
specified for FP_ChapterNumber.
FV_NUM_SAME: Use the same
chapter number as for the previous
file.
FV_NUM_READ_FROM_FILE: Use
the numbering properties from the
document associated with this book
component.
FP_ChapterNumber
IntT
If FP_ChapNumComputeMethod is
FV_NUM_RESTART, use this as the
chapter number
FP_ChapterNumStyle
IntT
The numbering style; one of:
FV_NUMSTYLE_NUMERIC: Arabic.
FV_NUMSTYLE_ROMAN_UC:
Roman, uppercase.
FV_NUMSTYLE_ROMAN_LC:
Roman,lowercase.
FV_NUMSTYLE_ALPHA_UC:
Alphabetic, uppercase.
FV_NUMSTYLE_ALPHA_LC:
Alphabetic, lowercase.
FV_NUMSTYLE_KANJI: Kanji.
FV_NUMSTYLE_ZENKAKU:
Zenkaku.
FV_NUMSTYLE_ZENKAKU_UC:
Zenkaku, uppercase.
FV_NUMSTYLE_ZENKAKU_LC:
Zenkaku, lowercase.
FV_NUMSTYLE_KANJI_KAZU:
Kazu.
FV_NUMSTYLE_DAIJI: Daiji.
FV_NUMSTYLE_TEXT: Text.
FP_ChapterNumText
StringT
If FP_ChapNumStyle is
FV_NUMSTYLE_TEXT, use this
string as the chapter number.
FDK Programmer’s Reference 749
4
The DOCTYPE system identifier for the source XML document.
Books
Property
FP_ComponentDisplay
Text
Type
Meaning
StringT
Text that displays in the book window
when the value of
FP_TypeOfDisplayText =
FV_BK_TEXT;.
To reset
FP_ComponentDisplayText so
the FrameMaker product
automatically updates the text line
with normal information, set it to an
empty string ("").
750
FP_ComponentIsSelected
IntT
True if the component is selected in
the book window
FP_ExtractTags
F_StringsT
List of paragraph tags or markers
type names that are used to set up a
generatable file (for example, table of
contents, list of figures, standard
index or index of authors)
FP_FirstPageNum
IntT
Number for the first page in the
component; used when
FP_PageNumComputeMethod =
FV_NUM_RESTART.
FP_FnFirstNum
StringT
Number for the first footnote in the
component; used when
FP_FnNumComputeMethod =
FV_NUM_RESTART.
FP_FnCustNumString
StringT
Characters for custom document
footnote numbers.
FDK Programmer’s Reference
Books
Property
FP_FnNumStyle
Type
Meaning
IntT
Footnote numbering style:
...
The DOCTYPE system identifier for the source XML document.
FV_FN_NUM_NUMERIC: Arabic
FV_FN_NUM_ROMAN_UC: Roman
uppercase
FV_FN_NUM_ROMAN_LC: Roman
lowercase
FV_FN_NUM_ALPHA_UC: Alphabetic
uppercase
FV_FN_NUM_ALPHA_LC: Alphabetic
lowercase
FV_FN_NUM_KANJI: Kanji
characters
FV_FN_NUM_ZENKAKU: Zenkaku
FV_FN_NUM_ZENKAKU_UC:
Zenkaku uppercase
FV_FN_NUM_ZENKAKU_LC:
Zenkaku lowercase
FV_FN_NUM_KANJI_KAZU: Kazu
FV_FN_NUM_DAIJI: Daiji
FV_FN_NUM_CUSTOM: Custom
numbering
FP_FnNumCompute
Method
IntT
The component document’s footnote
numbering type:
FV_NUM_CONTINUE: Continue the
numbering from the previous file.
FV_NUM_RESTART: Use the
number specified by
FP_FnFirstNum.
FV_NUM_PER_PAGE: Restart
numbering on each page.
FV_NUM_READ_FROM_FILE: Use
the numbering properties from the
document associated with this book
component.
FP_GenerateInclude
IntT
True if the document
appears in the scroll list of files to be
generated by the Generate/Update
command for the book
FDK Programmer’s Reference 751
4
The DOCTYPE system identifier for the source XML document.
Books
Type
Meaning
FP_ImportFmtInclude
IntT
True if the book component is
included in the list of components to
be updated with imported formats or
element definitions when the user or
a client executes Import Formats or
Import Element Definitions
FP_InsertLinks
IntT
True if hypertext links are
automatically inserted in generated
files
FP_Name
StringT
Pathname of document that the
component represents
FP_NextComponentInBook
F_ObjHandleT
Next component in the book file
(FO_BookComponent ID)
FP_NextSelected
ComponentInBook†
F_ObjHandleT
Next selected component in the book
window (FO_BookComponent ID)
FP_PageNumbering
IntT
Obsolete for version 6.0 and later; use
FP_PageNumComputeMethod:
Property
The component document’s page
numbering type:
FV_BK_CONT_PAGE_NUM
FV_BK_RESET_PAGE_NUM
FV_BK_READ_FROM_FILE
FP_PageNumCompute
Method
IntT
The component document’s page
numbering type:
FV_NUM_CONTINUE: Continue the
numbering from the previous file.
FV_NUM_RESTART: Restart
numbering at the value specified by
the FP_FirstPageNum property.
FV_NUM_READ_FROM_FILE: Use
the numbering properties from the
document associated with this book
component.
752
FDK Programmer’s Reference
Books
Property
FP_PageNumStyle
Type
Meaning
IntT
Page numbering style:
...
The DOCTYPE system identifier for the source XML document.
FV_PAGE_NUM_NUMERIC: Arabic
FV_PAGE_NUM_ROMAN_UC: Roman
uppercase
FV_PAGE_NUM_ROMAN_LC: Roman
lowercase
FV_PAGE_NUM_ALPHA_UC:
Alphabetic uppercase
FV_PAGE_NUM_ALPHA_LC:
Alphabetic lowercase
FV_PAGE_NUM_KANJI: Kanji
characters
FV_PAGE_NUM_ZENKAKU: Zenkaku
FV_PAGE_NUM_ZENKAKU_UC:
Zenkaku uppercase
FV_PAGE_NUM_ZENKAKU_LC:
Zenkaku lowercase
FV_PAGE_NUM_KANJI_KAZU: Kazu
FV_PAGE_NUM_DAIJI: Daiji
FP_PagePrefix
StringT
Obsolete for version 6.0 and later; use
chapter and volume numbering
instead:
Page prefix string
FP_PageSide
IntT
Page side to start the component
document on:
FV_BK_START_FROM_FILE
FV_BK_START_NEXT_
AVAILABLE
FV_BK_START_LEFT
FV_BK_START_RIGHT
FP_PageSuffix
StringT
Obsolete for version 6.0 and later; use
chapter and volume numbering
instead:
Page suffix string
FDK Programmer’s Reference 753
4
The DOCTYPE system identifier for the source XML document.
Books
Property
FP_PgfNumbering
Type
Meaning
IntT
Obsolete for version 6.0 and later; use
FP_PgfNumComputeMethod:
The component document’s
paragraph numbering:
FV_BK_CONT_PGF_NUM
FV_BK_RESTART_PGF_NUM
FP_PgfNumCompute
Method
IntT
The component document’s
paragraph numbering type:
FV_NUM_CONTINUE: Continue the
numbering from the previous file.
FV_NUM_RESTART: Restart
numbering at 1.
FV_NUM_READ_FROM_FILE: Use
the numbering properties from the
document associated with this book
component.
754
FP_PrevComponentInBook
F_ObjHandleT
Previous component in the book file
(FO_BookComponent ID)
FP_PrintInclude
IntT
True if the component document is
included in list of book files to be
printed
FP_TblFnCustNumString
StringT
Characters for custom table footnote
numbers.
FDK Programmer’s Reference
Books
Property
FP_TblFnNumStyle
Type
Meaning
IntT
Table footnote numbering style:
...
The DOCTYPE system identifier for the source XML document.
FV_FN_NUM_NUMERIC: Arabic
FV_FN_NUM_ROMAN_UC: Roman
uppercase
FV_FN_NUM_ROMAN_LC: Roman
lowercase
FV_FN_NUM_ALPHA_UC: Alphabetic
uppercase
FV_FN_NUM_ALPHA_LC: Alphabetic
lowercase
FV_FN_NUM_KANJI: Kanji
characters
FV_FN_NUM_ZENKAKU: Zenkaku
FV_FN_NUM_ZENKAKU_UC:
Zenkaku uppercase
FV_FN_NUM_ZENKAKU_LC:
Zenkaku lowercase
FV_FN_NUM_KANJI_KAZU: Kazu
FV_FN_NUM_DAIJI: Daiji
FV_FN_NUM_CUSTOM: Custom
numbering
FP_TblFnNumCompute
Method
IntT
The component document’s table
footnote numbering type:
FV_NUM_RESTART: Start at 1.
FV_NUM_READ_FROM_FILE: Use
the numbering properties from the
document associated with this book
component.
FP_Unique
IntT
UID of the book component
FDK Programmer’s Reference 755
4
The DOCTYPE system identifier for the source XML document.
Books
Property
FP_VolNumCompute
Method
Type
Meaning
IntT
The component document’s volume
numbering type:
FV_NUM_CONTINUE: Continue the
numbering from the previous
volume.
FV_NUM_RESTART: Use the value
specified for FP_VolumeNumber.
FV_NUM_SAME: Use the same
volume number as for the previous
file.
FV_NUM_READ_FROM_FILE: Use
the numbering properties from the
document associated with this book
component.
FP_VolumeNumber
IntT
If FP_VolNumComputeMethod is
FV_NUM_RESTART, use this as the
volume number
FP_VolumeNumStyle
IntT
The numbering style; one of:
FV_NUMSTYLE_NUMERIC: Arabic.
FV_NUMSTYLE_ROMAN_UC:
Roman, uppercase.
FV_NUMSTYLE_ROMAN_LC:
Roman, lowercase.
FV_NUMSTYLE_ALPHA_UC:
Alphabetic, uppercase.
FV_NUMSTYLE_ALPHA_LC:
Alphabetic, lowercase.
FV_NUMSTYLE_KANJI: Kanji.
FV_NUMSTYLE_ZENKAKU:
Zenkaku.
FV_NUMSTYLE_ZENKAKU_UC:
Zenkaku, uppercase.
FV_NUMSTYLE_ZENKAKU_LC:
Zenkaku, lowercase.
FV_NUMSTYLE_KANJI_KAZU:
Kazu.
FV_NUMSTYLE_DAIJI: Daiji.
FV_NUMSTYLE_TEXT: Text.
756
FDK Programmer’s Reference
Books
Property
FP_VolumeNumText
Type
Meaning
StringT
If FP_VolNumStyle is
FV_NUMSTYLE_TEXT, use this
string as the chapter number.
...
The DOCTYPE system identifier for the source XML document.
Book component structure properties
The following FO_BookComponent properties are used in Structured FrameMaker
only.
Type
Meaning/possible values
FP_ComponentElement†
F_ObjHandleT
Component element (FO_Element
ID)
FP_ExtractElementTags
F_StringsT
List of element tags that are used to
set up a generatable file (for
example, table of contents, list of
figures, or list of tables)
Property
FDK Programmer’s Reference 757
4
The DOCTYPE system identifier for the source XML document.
Character formats
Character formats
The API uses an FO_CharFmt object to represent a character format.
FO_CharFmt
FO_CharFmt objects have the following properties.
Type
Meaning
FP_BkColor
F_ObjHandleT
Text background color
FP_Capitalization
IntT
The capitalization type:
Property
FV_CAPITAL_CASE_NORM: normal
capitalization (mixed uppercase and
lowercase)
FV_CAPITAL_CASE_SMALL:
small caps
FV_CAPITAL_CASE_LOWER:
lowercase letters only
FV_CAPITAL_CASE_UPPER:
uppercase letters only
758
FP_ChangeBar
IntT
True if Change Bars are on.
FP_CharTag
StringT
The character format’s tag name.
FP_Color
F_ObjHandleT
Spot color (FO_Color ID).
FP_CombinedFontFamil
y
F_ObjHandleT
Combined font definition
(FO_CombinedFontDefn)
FP_FontAngle
IntT
Font angle (specifies an index into the
array of font angles provided by the
session property
FP_FontAngleNames).
FP_FontEncodingName†
StringT
The font’s encoding
FP_FontFamily
IntT
Font family (specifies an index into the
array of font families provided by the
session property
FP_FontFamilyNames).
FDK Programmer’s Reference
Character formats
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
FP_FontPlatformName
StringT
Name that uniquely identifies a font on a
specific platform (for more information,
see “How the API represents fonts” in the
FDK Programmer’s Guide). For
combined fonts, this is the Asian font
name.
FP_FontPostScript
Name
StringT
Name given to a font when it is sent to a
PostScript printer (for more information,
see “How the API represents fonts” in the
FDK Programmer’s Guide). For
combined fonts, this is the Asian font
name.
FP_UseBkColor
F_ObjHandleT
True: text background color set for this
character format (False if AsIS)
FP_WesternFont
PlatformName
StringT
Name that uniquely identifies the Roman
component of a combined font on a
specific platform (for more information,
see “How the API represents fonts” in the
FDK Programmer’s Guide).
FP_WesternFont
PostScriptName
StringT
Name given to the Roman component of a
combined font when it is sent to a
PostScript printer (for more information,
see “How the API represents fonts” in the
FDK Programmer’s Guide).
FP_FontSize
MetricT
Font size (2 pt to 400 pt).
FP_FontVariation
IntT
Font variation (specifies an index into the
array of font variations provided by the
session property
FP_FontVariationNames).
FP_FontWeight
IntT
Font weight (specifies an index into the
array of font weights provided by the
session property
FP_FontWeightNames).
Property
FDK Programmer’s Reference 759
4
The DOCTYPE system identifier for the source XML document.
Character formats
Property
FP_Language
Type
Meaning
IntT
Hyphenation and spell-checking language
to use:
FV_LANG_BRAZILIAN
FV_LANG_BRITISH
FV_LANG_CANADIAN_FRENCH
FV_LANG_CATALAN
FV_LANG_DANISH
FV_LANG_DUTCH
FV_LANG_ENGLISH
FV_LANG_FINNISH
FV_LANG_FRENCH
FV_LANG_GERMAN
FV_LANG_ITALIAN
FV_LANG_NOLANGUAGE
FV_LANG_NORWEGIAN
FV_LANG_NYNORSK
FV_LANG_PORTUGUESE
FV_LANG_SPANISH
FV_LANG_SWEDISH
FV_LANG_SWISS_GERMAN
FV_LANG_JAPANESE
FV_LANG_TRADITIONAL_CHINESE
FV_LANG_SIMPLIFIED_CHINESE
FV_LANG_KOREAN
760
FP_KernX
MetricT
Horizontal kern value for manual kerning
expressed as a percentage of an em
(metric –1000% to 1000%).a A positive
value moves a character right and a
negative value moves a character left.
FP_KernY
MetricT
Vertical kern value for manual kerning
expressed as a percentage of an em
(metric –1000% to 1000%). A positive
value moves characters up and a negative
value moves characters down.
FP_Name
StringT
The character format’s name.
FP_NextCharFmtInDoc†
F_ObjHandleT
Next character format in document
(FO_CharFmt ID).
FDK Programmer’s Reference
Character formats
Type
Meaning
FP_Overline
IntT
True if Overline is enabled.
FP_PairKern
IntT
True if Pair Kern is enabled.
FP_Position
IntT
Vertical position of character:
Property
...
The DOCTYPE system identifier for the source XML document.
FV_POS_NORM: Normal
FV_POS_SUB: Subscript
FV_POS_SUPER: Superscript
FP_Spread
MetricT
Obsolete property, but still functional.
See corresponding "tracking" property
below.
FP_Stretch
MetricT
Character stretch (set width) expressed as
a percentage of normal stretch for the font
(metric –10% to 1000%).
FP_Strikethrough
IntT
True if Strikethrough is enabled.
FP_Tracking
MetricT
Character tracking expressed as a
percentage of an em (metric –100% to
1000%).
FP_Underlining
IntT
Underlining type:
FV_CB_NO_UNDERLINE
FV_CB_SINGLE_UNDERLINE
FV_CB_DOUBLE_UNDERLINE
FV_CB_NUMERIC_UNDERLINE
FP_UseCapitalization
IntT
True if FP_Capitalization
property overrides default; False if As
Is setting used.
FP_UseChangeBar
IntT
True if FP_ChangeBar property
overrides default; False if As Is setting
used.
FP_UseColor
IntT
True if FP_Color property overrides
default; False if As Is setting used.
FP_UseFontAngle
IntT
True if FP_FontAngle
overrides default; False if As Is setting
used.
FP_UseFontFamily
IntT
True if FP_FontFamily
overrides default; False if As Is setting
used.
FDK Programmer’s Reference 761
4
The DOCTYPE system identifier for the source XML document.
Character formats
Type
Meaning
FP_UseFontSize
IntT
True if FP_FontSize
overrides default; False if As Is setting
used.
FP_UseFontVariation
IntT
True if FP_FontVariation
overrides default; False if As Is setting
used.
FP_UseFontWeight
IntT
True if FP_FontWeight
overrides default; False if As Is setting
used.
FP_UseKernX
IntT
True if FP_KernX
overrides default; False if As Is setting
used.
FP_UseKernY
IntT
True if FP_KernY
overrides default; False if As Is setting
used.
FP_UseOverline
IntT
True if FP_Overline property
overrides default; False if As Is setting
used.
FP_UsePairKern
IntT
True if FP_PairKern property
overrides default; False if As Is setting
used.
FP_UsePosition
IntT
True if FP_Position overrides
default; False if As Is setting used.
FP_UseSpread
IntT
Obsolete property, but still functional.
See corresponding "tracking" property
below.
FP_UseStretch
IntT
True if FP_Stretch property overrides
default, False if As Is setting is used.
FP_UseStrikethrough
IntT
True if FP_Strikethrough property
overrides default; False if As Is setting
used.
FP_UseTracking
IntT
True if FP_Tracking property
overrides default; False if As Is setting
used.
FP_UseUnderlining
IntT
True if FP_Underlining property
overrides default; False if As Is setting
used.
Property
a. In the API, most percentages are represented as MetricT fractions. For spread percentages, the MetricT
value 1<<16 or 0x10000 specifies 100% or 1. For more information on MetricT values, see
“MetricT values” on page 962.
762
FDK Programmer’s Reference
Colors
...
The DOCTYPE system identifier for the source XML document.
Colors
The API uses an FO_Color object to represent each color in a Frame document.
Properties that specify colors specify the IDs of FO_Color objects.
FO_Color
FO_Color objects have the following properties.
Type
Meaning
FP_Black
MetricT
Percentage of black
(metric 0% to 100%)a
FP_ColorOverprint
IntT
Overprint setting for the color:
Property
FV_COLOR_OVERPRINT
FV_COLOR_KNOCKOUT
FP_ColorPrintCtl
IntT
Type of color printing used in document:
FV_PRINT_SPOT
FV_PRINT_PROCESS
FV_PRINT_NO
FP_ColorTintPercent
MetricT
The tint percentage (0% to 100%) or
FV_COLOR_NOT_TINTED if the color is
not a tint. Specifies the percentage of the
FP_TintBaseColor to use for tinting.
FP_ColorViewCtl
IntT
A 12-bit number for spot color views. The
least significant 2 bits are View 1, the next
2 bits are View 2, and so on. For more
information, see Figure 4-1 and the text
below.
FP_Cyan
MetricT
Percentage of cyan
(metric 0% to 100%)
FP_FamilyName
StringT
Color library name. Note that that you must
specify the full ink name, including any
trademark symbols. For example, use
"MUNSELL\xa8 Book of Color" for
“MUNSELL® Book of Color.”
FP_InkName
StringT
Specifies the name of the color library
pigment. Use this instead of FP_Pantone.
FP_Magenta
MetricT
Percentage of magenta
(metric 0% to 100%)
FDK Programmer’s Reference 763
4
The DOCTYPE system identifier for the source XML document.
Colors
Type
Meaning
FP_Name
StringT
Name of color
FP_NextColorInDoc†
F_ObjHandleT
Next color in document (FO_Color ID)
FP_ReservedColor
IntT
Color names reserved by Frame products:
Property
FV_COLOR_NOT_RESERVED
FV_COLOR_CYAN
FV_COLOR_MAGENTA
FV_COLOR_YELLOW
FV_COLOR_BLACK
FV_COLOR_WHITE
FV_COLOR_RED
FV_COLOR_GREEN
FV_COLOR_BLUE
FP_TintBaseColor
F_ObjHandleT
Color from which the tint is derived
(FO_Color ID), or
FV_NO_BASE_COLOR if the color is not
a tint.
FP_Yellow
MetricT
Percentage of yellow
(metric 0% to 100%)
a. In the API, most percentages are represented as MetricT fractions. For color percentages, the MetricT
value 1<<16 or 0x10000 specifies 1%. For more information on MetricT values, see “MetricT
values” on page 962.
The FP_ColorViewCtl property specifies a 12-bit number for color views. The two
least significant bits are View 1, the next 2 bits are View 2, and so on, as shown in
Figure 4-1.
12-bit number
View 6 View 5 View 4 View 3 View 2 View 1
Figure 4-1 Bit positions representing spot color views
The values of each 2-bit setting are one of the following:
764

FV_SEP_NORMAL

FV_SEP_NONE

FV_SEP_WHITE
FDK Programmer’s Reference
Columns
...
The DOCTYPE system identifier for the source XML document.
Columns
The API uses an FO_SubCol object to represent each subcolumn in a text frame.
FO_SubCol objects have the following properties. All of these properties are readonly.
Type
Meaning
FP_ContentHeight†
MetricT
The distance between the top of the
column and the baseline of the last line in
the column.
FP_FirstAFrame†
F_ObjHandleT
First anchored frame in the column
(FO_AFrame ID).
FP_FirstCell†
F_ObjHandleT
First table cell in the column (FO_Cell
ID).
FP_FirstFn†
F_ObjHandleT
First footnote in the column (FO_Fn ID).
FP_FirstPgf†
F_ObjHandleT
First paragraph in the column (FO_Pgf
ID).
FP_FrameParent†
F_ObjHandleT
ID of text frame that contains the column
(FO_TextFrame ID).
FP_Height†
MetricT
Column height.
FP_LastAFrame†
F_ObjHandleT
Last anchored frame in the column
(FO_AFrame ID).
FP_LastCell†
F_ObjHandleT
Last table cell in the column (FO_Cell
ID).
FP_LastFn†
F_ObjHandleT
Last footnote in the column (FO_Fn ID).
FP_LastPgf†
F_ObjHandleT
Last paragraph in the column (FO_Pgf
ID).
FP_LocX†
MetricT
Offset from left side of the text frame that
contains the column.
FP_LocY†
MetricT
Offset from top of text frame that contains
the column.
FP_NextSubCol†
F_ObjHandleT
Next column in the text frame that
contains the column (FO_SubCol ID).
FP_Overflowed†
IntT
True if the text frame containing the
column has Autoconnect turned off and
text overflows the column.
Property
FDK Programmer’s Reference 765
4
The DOCTYPE system identifier for the source XML document.
Combined font definitions
Type
Meaning
FP_ParentTextFrame†
F_ObjHandleT
ID of text frame that contains the column
(FO_TextFrame ID).
FP_PrevSubCol†
F_ObjHandleT
Previous column in the text frame that
contains the column (FO_SubCol ID).
FP_Unique†
IntT
Text column’s UID.
FP_Width†
MetricT
Column width.
Property
Text
To get the text in a column, call
F_ApiGetText() with objId set to
the column ID. To add text to a column,
call F_ApiAddText(). To delete text
from a column, call
F_ApiDeleteText(). For more
information, see “F_ApiAddText()” on
page 74, “F_ApiDeleteText()” on
page 147, and “F_ApiGetText()” on
page 251.
Combined font definitions
The API uses an FO_CombinedFontDefn object to represent each combined font in
a document.
FO_Doc objects have a property to specify the first combined font in the document’s
list of combined fonts. To see this property, see “Document object pointer properties”
on page 788.
..............................................................................
IMPORTANT: Combined fonts are stored with the document, not with the current
session. The session property, FP_FontFamilyNames returns a list of fonts available
for the current session, but it does not include any combined fonts. To get a list of
combined font definitions, use FP_FirstCombinedFontDefnInDoc to get the first
combined font definition in the document. From that you can build a list of combined
font definitionss using FP_NextCombinedFontDefnInDoc.
..............................................................................
766
FDK Programmer’s Reference
Combined font definitions
...
The DOCTYPE system identifier for the source XML document.
FO_CombinedFontDefn
FO_CombinedFontDefn objects have the following properties.
Type
Meaning
FP_NextCombinedFont
DefnInDoc†
IntT
Next combined font definition instance in
the document
(FO_CombinedFontDefn ID)
FP_Name
StringT
Name of the combined font.
FP_BaseFamily
IntT
Asian font family (specifies index into
the arrays of font families provided by the
session property,
FP_FontFamilyNames)
FP_WesternFamily
IntT
Western font family (specifies index into
the arrays of font families provided by the
session property,
FP_FontFamilyNames)
FP_ViewHotspotIndica
tors
BoolT
Turns on hotspot indicators. Hotspot
indicators are small square boxes at the
centre of an object to indicate that the
object is actually a hotspot.
FP_WesternSize
MetricT
Scaling factor for Roman text expressed
as a percentage of base font size (metric
1% to 1000%)
FP_WesternShift
MetricT
Baseline offset of Roman text expressed
as a percentage of base font size (metric
1% to 1000%)
FP_FontEncodingName†
StringT
Combined font’s encoding, based on the
FP_BaseFamily
FP_UserString
StringT
Property
FDK Programmer’s Reference 767
4
The DOCTYPE system identifier for the source XML document.
Commands, menus, menu items, and menu item separators
Commands, menus, menu items, and menu item separators
The API uses FO_Command objects to represent commands, FO_Menu objects to
represent menus, and FO_MenuItemSeparator objects to represent menu item
separators. Menu items are FO_Command objects that appear on a menu. Each of these
object types has a number of common properties and a number of properties that are
specific to it.
Common command, menu, and menu item separator properties
All commands, menus, and menu item separators have the following properties.
Type
Meaning
FP_Label
StringT
The label the user sees on a
menu. The label for menu item
separators is read-only; it is
always ---.
FP_MenuItemIsEnabled†
IntT
True if the menu or menu item
is enabled or False if it is
disabled (dimmed).
FP_Name†
StringT
The command, menu, or menu
item separator name.a
FP_NextMenuItemInMenu
F_ObjHandleT
The next menu item, menu, or
separator in the menu.
FP_NextMenuItemInSession†
F_ObjHandleT
The next menu item, menu, or
separator in the list of menu
items, menus, and separators in
the session.
FP_PrevMenuItemInMenu
F_ObjHandleT
The previous menu item, menu,
or separator in
the menu.
Property
a. The names for the default, predefined separators are !Separator, !Separator1, !Separator2,
!Separator3, !Separator4, and !Separator5.
768
FDK Programmer’s Reference
Commands, menus, menu items, and menu item separators
...
The DOCTYPE system identifier for the source XML document.
FO_Command
An FO_Command object represents a command or a menu item (a command that
appears on a menu). FO_Command objects have the following properties.
Property
Type
Meaning
See “Common command, menu, and
menu item separator properties” on
page 768.
Common command, menu, and
menu item separator object
properties
FP_CanHaveCheckMark
IntT
True if the menu item can have a check
mark. If the menu item is defined by the
FrameMaker product, you can get this
property, but not set it.
FP_CheckMarkIsOn
IntT
True if the menu item can have a check
mark and the check mark is on. If the
menu item is defined by the FrameMaker
product, you can get this property, but
not set it.
FP_CommandNum
IntT
The integer that you specified for the
cmd parameter of
F_ApiDefineAndAddCommand() or
F_ApiDefineCommand() when you
created the command. When the user
executes the command, the FrameMaker
product passes this integer to your
client’s F_ApiCommand() function. If
the menu item is defined by the
FrameMaker product, you can get this
property, but not set it.
FP_EnabledWhen
IntT
The context in which the menu item is
enabled. For a list of the constants that
this field can specify, see the table below.
If the menu item is defined by the
FrameMaker product, you can get this
property, but not set it.
FP_ExpandOMaticParent†
F_ObjHandleT
If the menu item is an expandomatic
menu item, the ID of its virtual parent
(FO_Command ID).
FP_Fcode†
UIntT
An f-code that the FrameMaker product
executes when the user chooses the menu
item or presses the keyboard shortcut.
FDK Programmer’s Reference 769
4
The DOCTYPE system identifier for the source XML document.
Commands, menus, menu items, and menu item separators
Type
Meaning
FP_Fcodes†
F_UIntsT
The list of f-codes that the FrameMaker
product executes when the user chooses
the menu item or presses the keyboard
shortcut. Normally, the first f-code in the
list is the same as the f-code specified by
FP_Fcode.
FP_HasShiftOrUnshift
Command
IntT
Specifies whether a command has an
accompanying shift command or unshift
command:
Property
FV_ITEM_HAS_SHIFT_COMMAND
FV_ITEM_HAS_UNSHIFT_COMMAND
FV_ITEM_HAS_NO_SHIFT_OR_
UNSHIFT_COMMAND
FP_HelpLink
StringT
The hypertext link to call when the user
requests context-sensitive help for the
command.
If you set this property, specify
the destination file and an
optional page number or
linkname. For example, specify
foo.doc:lastpage. Do not specify
hypertext commands such as
gotopage. The FrameMaker product
automatically prepends the appropriate
hypertext command
to the FP_HelpLink string when the
user requests
context-sensitive help.
If the destination file is not in the client
directory, the FrameMaker product looks
for it in the FrameMaker product help
directory.
This property is valid only for commands
created by clients. It is not valid for
commands created directly by
FrameMaker products.
FP_KeyboardShortcut
Label
770
FDK Programmer’s Reference
StringT
The keyboard shortcut string that appears
on the menu. This string need not be one
of the actual shortcuts specified by
FP_KeyboardShortcuts.
Commands, menus, menu items, and menu item separators
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
FP_KeyboardShortcuts
F_StringsT
The list of keyboard shortcuts the user
can press to execute the command. To
add a shortcut, append it to the list. The
API does not allow you to delete
shortcuts from the list.
FP_Labels
F_StringsT
If the command is a menu item, the list of
labels it can have in different contexts. If
the menu item has only one label in all
contexts, FP_Labels specifies only
the string for that label.
Property
If the menu item has different labels in
different contexts, FP_Labels
specifies pairs of strings with the
following format:
Context,Label
where Label specifies the menu item
label and Context specifies the
context in which the label appears on the
menu. For more information, see
“Getting and setting menu item labels”
in the FDK Programmer’s Guide.
FP_MenuItemType†
IntT
The type of command or menu item:
FV_MENUITEM_FRAME: the command is
a menu item defined by the FrameMaker
product.
FV_MENUITEM_API: the command is a
menu item defined by a client.
FV_MENUITEM_MACRO: the menu item
is not a command; it calls a macro.
FV_MENUITEM_EXPANDOMATIC: the
menu item is an expandomatic menu
item (such as !ShowParagraphTags)
defined by the FrameMaker product.
FP_Mode†
IntT
The mode in which keyboard shortcuts
are recorded:
FV_MODE_ALL
FV_MODE_MATH
FV_MODE_NONMATH
FDK Programmer’s Reference 771
4
The DOCTYPE system identifier for the source XML document.
Commands, menus, menu items, and menu item separators
Type
Meaning
FP_NextCommandIn
Session†
F_ObjHandleT
The next command in the list of
commands in the session.
FP_ShiftOrUnshift
Command
F_ObjHandleT
If FP_HasShiftOrUnshiftCommand
is set to
FV_ITEM_HAS_SHIFT_COMMAND, the
ID of the command to use when the user
holds down the Shift key.
Property
If FP_HasShiftOrUnshiftCommand
is set to
FV_ITEM_HAS_UNSHIFT_COMMAND,
the ID of the command to use when the
user isn’t holding down the Shift key.
The following table lists the values FP_EnabledWhen can have and the
corresponding contexts in which a menu item is active.
FP_EnabledWhen value
772
Context in which a menu item is active
FV_ENABLE_ALWAYS_ENABLE
All contexts. This is the default value.
If the menu item is disabled, setting
FP_EnabledWhen to this value enables it.
FV_ENABLE_ALWAYS_DISABLE
No context. The menu item is disabled.
If a menu item is enabled and you set
FP_EnabledWhen to this value, it disables
and dims the menu item.
FV_ENABLE_BOOK_HAS_
SELECTION
The book contains a selection.
FV_ENABLE_DOC_OR_BOOK_HAS_
SELECTION
A document is in the front, or a book has a selection.
FV_ENABLE_IN_PARA_TEXT
The insertion point or selection is in a paragraph (but
not in a math object).
FV_ENABLE_IN_TEXT_LINE
The insertion point or selection is in a graphic text line.
FV_ENABLE_IS_TEXT_SEL
The selection is in a paragraph.
FV_ENABLE_IN_MATH
The insertion point or selection is in a
math object.
FV_ENABLE_IN_TEXT
The insertion point or selection is in a graphic text line
or a paragraph.
FDK Programmer’s Reference
Commands, menus, menu items, and menu item separators
FP_EnabledWhen value
...
The DOCTYPE system identifier for the source XML document.
Context in which a menu item is active
FV_ENABLE_OBJ_PROPS
The insertion point is in text, a table, or a math object,
or a graphic object is selected.
FV_ENABLE_IN_TABLE
The insertion point or selection is in any part of a table.
FV_ENABLE_IN_TABLE_TITLE
The insertion point or selection is in the
table title.
FV_ENABLE_IN_CELL_TEXT
The insertion point or selection is in a
table cell.
FV_ENABLE_IS_CELL
A single cell in a table is selected.
FV_ENABLE_IS_CELLS
One or more cells in a table are selected.
FV_ENABLE_IS_TABLE
An entire table is selected.
FV_ENABLE_IS_OBJ
An object is selected.
FV_ENABLE_IS_TEXT_FRAME
A text frame is selected.
FV_ENABLE_IS_OR_IN_FRAME
The selected object is a graphic frame or is in a graphic
frame that is not a page frame.
FV_ENABLE_IS_AFRAME
The first selected object is an anchored frame.
FV_ENABLE_IS_GRAPHIC_INSET
The first selected object is a graphic inset.
FV_ENABLE_IS_TEXT_INSET
The first selected object is a text inset.
FV_ENABLE_IN_FLOW
A text frame is selected, or the insertion point or
selection is in a paragraph.
FV_ENABLE_COPY
Some text or an object is selected.
FV_ENABLE_COPY_FONT
The insertion point or selection is in the text
of a paragraph, a math object, a table, or a
text line.
FV_ENABLE_CAN_PASTE
The Clipboard contains an object or text that can be
pasted at the insertion point.
FV_ENABLE_IS_VIEW_ONLY
The current document is locked.
FV_ENABLE_NEEDS_DOCP_
OR_BOOKP
A document or a book is open.
FV_ENABLE_NEEDS_DOCP_ONLY
A document is open.
FV_ENABLE_NEEDS_BOOKP_ONLY
A book is open.
FDK Programmer’s Reference 773
4
The DOCTYPE system identifier for the source XML document.
Commands, menus, menu items, and menu item separators
FO_MenuItemSeparator
An FO_MenuItemSeparator object represents a menu item separator.
FO_MenuItemSeparator objects have only the common properties for commands,
menus, and menu item separators.
Type
Property
Common command, menu, and menu
item separator object properties
Meaning
See “Common command, menu, and
menu item separator properties” on
page 768.
FO_Menu
An FO_Menu object represents a menu. FO_Menu objects have the following
properties.
Property
Type
Meaning
See “Common command, menu, and
menu item separator properties” on
page 768.
Common command, menu, and
menu item separator object
properties
FP_FirstMenuItemInMenu
F_ObjHandleT
The first menu item or menu in the
menu.
FP_MenuType†
IntT
Type of menu:
FV_MENU_MENUBAR: a menu bar
defined by the FrameMaker product
FV_MENU_POPUP: a pop-up menu
FV_MENU_ADHOCRULER: an ad hoc
formatting menu that appears on the
ruler
FV_MENU_DEFAULT: a pull-down or
pull-right menu
774
FDK Programmer’s Reference
Conditions
...
The DOCTYPE system identifier for the source XML document.
Conditions
The API uses an FO_CondFmt object to represent each conditional text format in a
document. It uses FO_AttrCondExpr object to filter output content based on conditional
text attributes.
FO_Doc objects also have properties that specify how all the condition formats in the
document appear. For a list of these properties, see “Document condition properties” on
page 805.
FO_AttrCondExpr
An object of type attribute conditional expression. Represents a boolean expression that
filters output content. This object has the following properties:
Type
Meaning
FP_AttrCondExprStr
StringT
Returns or sets the actual Boolean
conditional expression
FP_AttrCondExprIsActive
Boolean
Returns or sets whether the conditional
expression is active or not.
FP_FirstAttrCondExprInDo
c
StringT
Returns the handle to the first attribute
conditional expression object in doc.
FP_NextAttrCondExprInDoc
StringT
Returns the handle to the next attribute
conditional expression object in document
relative to the passed object (of type
FO_AttrCondExpr)
Property
FO_CondFmt
FO_CondFmt objects have the following properties.
Type
Meaning
FP_BkColor
F_ObjHandleT
Text background color
FP_CondFmtIsShown
IntT
True if the condition is shown. To hide
text with a specified condition, set this
property and the FO_Doc property,
FP_ShowAll, to False.
FP_Name
StringT
Name of the condition format.
Property
FDK Programmer’s Reference 775
4
The DOCTYPE system identifier for the source XML document.
Conditions
Type
Meaning
FP_NextCondFmtInDoc†
F_ObjHandleT
Next condition format in document
(FO_CondFmt ID).
FP_SepOverride
F_ObjHandleT
Color separation format override
(FO_Color ID).
FP_StyleOverride
IntT
Style condition indicators for conditional
text:
Property
FV_CN_CHANGEBAR
FV_CN_DOUBLE_UNDERLINE
FV_CN_NO_OVERRIDE
FV_CN_OVERLINE
FV_CN_SINGLE_UNDERLINE
FV_CN_STRIKETHROUGH
FV_CN_NUMERIC_UNDERLINE
FV_CN_NMRIC_AND_CHNGBAR
776
FP_UseBkColor
F_ObjHandleT
True: text background color set for this
character format (False if AsIS)
FP_UseSepOverride
IntT
True if color specified by
FP_SepOverride is used instead
of default.
FDK Programmer’s Reference
Cross-references
...
The DOCTYPE system identifier for the source XML document.
Cross-references
The API uses an FO_XRef object to represent a cross-reference instance and an
FO_XRefFmt object to represent a cross-reference format.
FO_XRef
FO_XRef objects have the following properties.
Type
Meaning
FP_Element†
F_ObjHandleT
If the cross-reference is in a Structured
document, the ID of the associated element.
FP_Locked
IntT
True if the cross-reference is part of a text
inset that retains formatting information
from the source document. The crossreference is not affected by global formatting
performed on the document.
FP_NextXRefInDoc†
F_ObjHandleT
Next cross-reference instance in document
(FO_XRef ID).
FP_TextRange†
F_TextRangeT
Text range that the cross-reference instance
encompasses.
FP_Unique†
IntT
The cross-reference’s UID.
FP_XRefFmt
F_ObjHandleT
ID of the cross-reference’s format
(FO_XrefFmt ID).
FP_XRefFile
StringT
The filename of the file containing the crossreference source. If the cross-reference
source is in the same document as the cross
reference, the filename is an empty string
("").
FP_XrefIs
Unresolved†
IntT
True if the FrameMaker product was unable
to resolve the cross-reference the last time it
updated cross-references.
Property
Note that this property is set only when the
FrameMaker product updates crossreferences. Changes to the document, in and
of themselves, do not affect this property.
FDK Programmer’s Reference 777
4
The DOCTYPE system identifier for the source XML document.
Dialog boxes
Type
Meaning
FP_XRefSrcText
StringT
If FP_XRefSrcIsElem is False, the text
of the cross-reference source marker; if
FP_XRefSrcIsElem is True, a string
specifying UID:src_name:text, where
UID is the unique ID of the source element,
name is the element name, and text is text
content of the source element.
FP_XRefSrcIsElem
IntT
True if the cross-reference source is a
structural element.
Property
FO_XRefFmt
FO_XRefFmt objects have the following properties.
Type
Meaning
FP_Fmt
StringT
The cross-reference format (a string that
specifies text and building blocks)
FP_Name
StringT
The cross-reference format’s name
FP_NextXRefFmtInDoc†
F_ObjHandleT
ID of the next cross-reference format
(FO_XRefFmt ID)
Property
Dialog boxes
The API uses an FO_DialogResource object to represent a dialog box and the
following objects to represent the items in it:
778

FO_DlgBox

FO_DlgButton

FO_DlgCheckBox

FO_DlgEditBox

FO_DlgImage
FDK Programmer’s Reference
Dialog boxes

FO_DlgLabel

FO_DlgPopUp

FO_DlgRadioButton

FO_DlgScrollBar

FO_DlgScrollBox

FO_DlgTriBox
...
The DOCTYPE system identifier for the source XML document.
FO_DialogResource
An FO_DialogResource object represents a dialog box. FO_DialogResource
objects have the following properties.
Property
FP_DockDialog
Type
Meaning
IntT
Allows setting of the dock location of a modeless dialog.
It can have one of the following values:

FV_DIALOG_DOCK_NONE: No docking of
dialog; the dialog will be a floating one.

FV_DIALOG_DOCK_LEFT: Dock dialog to the
left

FV_DIALOG_DOCK_RIGHT: Dock dialog to the
right

FV_DIALOG_DOCK_BOTTOM: Dock dialog to
the bottom

FV_DIALOG_DOCK_ALL: Allow docking of
dialog to left, right or bottom
FP_DoubleClick†
IntT
True if the dialog box was double-clicked on. The
value of this property is valid only when your client gets
it in the F_ApiDialogEvent() callback.
FP_Focus
IntT
If set, instead of refocusing on the document after
processing a command from the dialog, keeps the focus
on the dialog itself.
FDK Programmer’s Reference 779
4
The DOCTYPE system identifier for the source XML document.
Dialog boxes
Property
FP_GroupDialog
780
FDK Programmer’s Reference
Type
Meaning
IntT
FP_GroupDialog property enables the clients to group
a modless dialog in a particular group so that when the
dialog is launched it opens in the group specified by this
property.

FV_DIALOG_GROUP_SPECIA: Place in
special group along with panels like marker,
hypertext etc.

FV_DIALOG_GROUP_CATALOGS: Group
along with catalogs

FV_DIALOG_GROUP_DESIGNERS: Group
along with designers

FV_DIALOG_GROUP_ATTRIBUTES: Group
along with panels like attribute-editor

FV_DIALOG_GROUP_PODS: Group with
pods

FV_DIALOG_GROUP_PODSRIGHT: Group
with pods on right sied e.g FONTPOD

FV_DIALOG_GROUP_EDIT: Place in edit
group

FV_DIALOG_GROUP_ALLPANELS: Place
with any panel group

FV_DIALOG_GROUP_RMKITS: Place with
Rmkits like DITA Map, book etc

FV_DIALOG_GROUP_ALL: Place with any
group.
Dialog boxes
Property
FP_HelpLink
Type
Meaning
StringT
The hypertext link to call when the user requests
context-sensitive help for the dialog box.
...
The DOCTYPE system identifier for the source XML document.
If you set this property, specify the destination file and
an optional page number or linkname. For example,
specify foo.doc:lastpage. Do not specify
hypertext commands such as gotopage. The
FrameMaker product automatically prepends the
appropriate hypertext command to the FP_HelpLink
string when the user requests context-sensitive help.
If the destination file is not in the client directory, the
FrameMaker product looks for it in the FrameMaker
product help directory.
If your client has not defined a help link for the dialog
box, this string is the default help link to the help main
menu.
The FrameMaker product includes dialog boxes that are
shared by multiple commands. The string for such dialog
boxes is prepended with a Shared db: statement. .
FP_IsDialogDock
ed
IntT
Property to determine if the dialog is in docked state or
not.
FP_IsDialogVisi
ble
IntT
Property to determine if the dialog is visible or not.
FP_Label
StringT
The dialog box title.
FP_NumItems†
IntT
The number of items in the dialog box.
FP_MaxSize
IntT
Sets maximum size for modeless dialogs (lower word:
width, higher word: height). Here is an example of
setting maximum size to 230:
F_ObjHandleT dlgId =
F_ApiOpenResource (FO_DialogResource,
(StringT)"dialog");
F_ApiSetInt (FV_SessionId , dlgId,
FP_MaxSize, 230);
F_ApiModelessDialog (1, dlgId);
FDK Programmer’s Reference 781
4
The DOCTYPE system identifier for the source XML document.
Dialog boxes
Property
FP_MinSize
Type
Meaning
IntT
Set minimum size for modeless dialogs (lower word:
width, higher word: height). Here is an example of
setting minimum size to 230:
F_ObjHandleT dlgId =
F_ApiOpenResource (FO_DialogResource,
(StringT)"dialog");
F_ApiSetInt (FV_SessionId , dlgId,
FP_MinSize, 230);
F_ApiModelessDialog (1, dlgId);
FP_ScreenHeight
IntT
Height of the dialog box window in pixels.
FP_ScreenWidth
IntT
Width of the dialog box window in pixels.
FP_ScreenX
IntT
The offset of the dialog box window in pixels from the
left side of the screen (or the left of the FrameMaker
product application window on Windows).
If you set a value that would result in the dialog box
window being off the screen, that value is ignored and
the old value is retained.
FP_ScreenY
IntT
The offset of the dialog box window in pixels from the
top of the screen (or the top of the FrameMaker product
application window on Windows).
If you set a value that would result in the dialog box
window being off the screen, that value is ignored and
the old value is retained.
FO_DlgBox
An FO_DlgBox object represents a rectangular box drawn around a set of items in a
dialog box. FO_DlgBox objects have the following property.
Property
FP_Visibility
782
FDK Programmer’s Reference
Type
Meaning
IntT
True if the box is visible
Dialog boxes
...
The DOCTYPE system identifier for the source XML document.
FO_DlgButton
An FO_DlgButton object represents a button. FO_DlgButton objects have the
following properties.
Type
Meaning
FP_Label
StringT
The label that appears on the button
FP_Sensitivity
IntT
True if the button is enabled; False if it is disabled
(dimmed)
FP_State†
IntT
Constant specifying the state of the button:
Property
FV_DlgOptNotActive: the button was not clicked
FV_DlgOptActive: the button was clicked
FP_Visibility
IntT
True if the button is visible
FO_DlgCheckBox
An FO_DlgCheckBox object represents a checkbox. FO_DlgCheckBox objects
have the following properties.
Type
Meaning
FP_Label
StringT
The label that appears next to the checkbox
FP_Sensitivity
IntT
True if the checkbox is enabled; False if it is
disabled (dimmed)
FP_State
IntT
Constant specifying the state of the checkbox:
Property
FV_DlgOptActive: the checkbox is on
FV_DlgOptNotActive: the checkbox is off
FP_Visibility
IntT
True if the checkbox is visible
FDK Programmer’s Reference 783
4
The DOCTYPE system identifier for the source XML document.
Dialog boxes
FO_DlgEditBox
An FO_DlgEditBox object represents a text box. FO_DlgEditBox objects have
the following properties.
Type
Meaning
FP_Sensitivity
IntT
True if the text box is enabled; False if it is
disabled (dimmed)
FP_Text
StringT
The text in the text box
FP_Visibility
IntT
True if the text box is visible
Property
FO_DlgImage
An FO_DlgImage object represents an image pop-up menu. FO_DlgImage objects
have the following properties.
Type
Meaning
FP_Labels
F_StringsT
The list of settings displayed in the image pop-up
menu.
FP_Sensitivity
IntT
True if the image pop-up menu is enabled; False
if it is disabled (dimmed).
FP_State
IntT
The index (in the list specified by FP_Labels) of
the chosen setting. If no setting is chosen, it is -1.
FP_Visibility
IntT
True if the image pop-up menu is visible.
Property
FO_DlgLabel
An FO_DlgLabel object represents a label in a dialog box. FO_DlgLabel objects
have the following properties.
Property
FP_Label
784
FDK Programmer’s Reference
Type
Meaning
StringT
The string displayed by the label
Dialog boxes
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
FP_Sensitivity
IntT
True if the label is enabled; False if it is disabled
(dimmed)
FP_Visibility
IntT
True if the label is visible
Property
FO_DlgPopUp
An FO_DlgPopUp object represents a pop-up menu in a dialog box. FO_DlgPopUp
objects have the following properties.
Type
Meaning
FP_Labels
F_StringsT
The list of settings displayed in the pop-up menu.
FP_Sensitivity
IntT
True if the pop-up menu is enabled; False if it is
disabled (dimmed).
FP_State
IntT
The index (in the list specified by FP_Labels) of
the chosen setting. If no setting is chosen, it is -1.
FP_Visibility
IntT
True if the pop-up menu is visible.
Property
FO_DlgRadioButton
An FO_DlgRadioButton object represents a radio button. FO_DlgRadioButton
objects have the following properties.
Type
Meaning
FP_Label
StringT
The label that appears next to the radio button.
FP_Sensitivity
IntT
True if the radio button is enabled; False if it is
disabled (dimmed).
Property
FDK Programmer’s Reference 785
4
The DOCTYPE system identifier for the source XML document.
Dialog boxes
Property
FP_State
Type
Meaning
IntT
Constant specifying the state of the radio button:
FV_DlgOptNotActive: the radio button
is not on.
FV_DlgOptActive: the radio button is on.
Setting FP_State to False has no effect. To
turn a radio button off, you must turn on another one
of the buttons in the button set.
FP_Visibility
IntT
True if the radio button is visible.
FO_DlgScrollBar
An FO_DlgScrollBar object represents a scroll bar. FO_DlgScrollBar objects
have the following properties.
Type
Meaning
FP_IncrVal
IntT
The amount that the scroll bar’s thumb box moves
when the user clicks on either side of it in scroll bar.
For example, if FP_IncrVal is set to 10, the
scroll box moves 10 increments to the left when the
user clicks to the left of the thumb box.
FP_MaxVal
IntT
The largest value to which the user can drag the
scroll bar.
FP_MinVal
IntT
The smallest value to which the user can drag the
scroll bar.
FP_Size
MetricT
The scroll bar width if the scroll bar is horizontal or
the scroll bar height if the scroll bar is vertical.
FP_Sensitivity
IntT
True if the scroll bar is enabled; False if it is
disabled (dimmed).
FP_State
IntT
The value of the scroll bar.
FP_Visibility
IntT
True if the scroll bar is visible.
Property
786
FDK Programmer’s Reference
Dialog boxes
...
The DOCTYPE system identifier for the source XML document.
FO_DlgScrollBox
An FO_DlgScrollBox object represents a scroll list. FO_DlgScrollBox objects
have the following properties.
Property
FP_DoubleClick
Type
Meaning
IntT
True if double-clicking an item has the
effect of clicking the default button in the dialog
box.
The FP_DoubleClick property of the
FO_DlgScrollBox object does not specify
whether an item in a scroll list was double-clicked.
To determine this, you must get the
FP_DoubleClick property of the
FO_DialogResource object in the
F_ApiDialogEvent() callback. For more
information, see “FO_DialogResource” on
page 779.
FP_FirstVis
IntT
The index (in the list specified by FP_Labels) of
the item that appears at the top of the scroll list.
FP_Labels
F_StringsT
The list of items in the scroll list.
FP_NumLines†
IntT
The number of items displayed in the
scroll list.
FP_Sensitivity
IntT
True if the scroll list is enabled; False if it is
disabled (dimmed).
FP_State
IntT
The index (in the list specified by FP_Labels) of
the selected item. If no item is selected, it is -1.
FP_Visibility
IntT
True if the scroll list is visible.
FDK Programmer’s Reference 787
4
The DOCTYPE system identifier for the source XML document.
Documents
FO_DlgTriBox
An FO_DlgTriBox object represents a tri-state checkbox (tribox). A tribox is a
checkbox that can be on, off, or As Is (grayed or stippled). FO_DlgTriBox objects
have the following properties.
Type
Meaning
FP_Label
StringT
The label that appears next to the tribox
FP_Sensitivity
IntT
True if the tribox is enabled; False if it is
disabled (dimmed)
FP_State
IntT
Constant specifying the state of the tribox:
Property
FV_DlgOptNotActive: the tribox is off
FV_DlgOptActive: the tribox is on
FV_DlgOptDontCare: the tribox is set to As Is
FP_Visibility
IntT
True if the tribox is visible
Documents
The API uses an FO_Doc object to represent each open document in a FrameMaker
product session.
FO_Doc
FO_Doc objects have the following properties.
Document object pointer properties
FO_Doc objects have the following properties that specify the IDs of other objects.
Type
Meaning
FP_BkColor
F_ObjHandleT
Text background color
FP_CurrentPage
F_ObjHandleT
Current page (FO_BodyPage,
FO_MasterPage, or
FO_RefPage ID)
Property
788
FDK Programmer’s Reference
Documents
Property
FP_Direction
Type
Meaning
IntT
Set or get the direction of the
document. Possible values:
...
The DOCTYPE system identifier for the source XML document.
FV_DIR_Inherit - Inherit the
direction of the parent
FV_DIR_LTR - Left-to-right
FV_DIR_RTL - Right-to-left
FP_ResolvedDirection
IntT
Get the inherited direction of the
document. Possible values:
FV_DIR_LTR - Left-to-right
FV_DIR_RTL - Right-to-left
FP_FirstAttrCondExprInDoc
F_ObjHandleT
First attribute conditional
expression object in doc.
FP_FirstBodyPageInDoc†
F_ObjHandleT
First body page in the document
(FO_BodyPage ID)
FP_FirstCharFmtInDoc†
F_ObjHandleT
First character tag in the list of the
document’s character tags
(FO_CharFmt ID)
FP_FirstColorInDoc†
F_ObjHandleT
First color in the list of
document’s colors
(FO_Color ID)
FP_FirstCombinedFontDefnI
nDoc†
F_ObjHandleT
First combined font definition in
the list of the document’s
combined font definitions
(FO_CombinedFontDefn ID)
FP_FirstCondFmtInDoc†
F_ObjHandleT
First condition tag in the list of the
document’s condition tags
(FO_CondFmt ID)
FP_FirstFlowInDoc†
F_ObjHandleT
First flow in the list of the
document’s flows (FO_Flow ID)
FP_FirstFnInDoc†
F_ObjHandleT
First footnote in the list of the
documents footnotes (FO_Fn ID)
FP_FirstGraphicInDoc†
F_ObjHandleT
First graphic object in the
list of the document’s
graphic objects
(FO_GraphicObject ID)
FP_FirstMarkerInDoc†
F_ObjHandleT
First marker in the list of the
document’s markers (FO_Marker
ID)
FDK Programmer’s Reference 789
4
The DOCTYPE system identifier for the source XML document.
Documents
Type
Meaning
FP_FirstMarkerTypeInDoc†
F_ObjHandleT
First marker type in the list of the
document’s marker types
(FO_MarkerType ID)
FP_FirstMasterPageInDoc†
F_ObjHandleT
First master page in
the document
(FO_MasterPage ID)
FP_FirstPgfFmtInDoc†
F_ObjHandleT
First paragraph tag in the list of
the document’s paragraph tags
(FO_PgfFmt ID)
FP_FirstPgfInDoc†
F_ObjHandleT
First paragraph (FO_Pgf ID) in
the list of the document’s
paragraphs
FP_FirstRefPageInDoc†
F_ObjHandleT
First reference page in the
document (FO_RefPage ID)
FP_FirstRubiInDoc†
F_ObjHandleT
First rubi composite in the list of
the document’s rubi composites
(FO_Rubi ID)
FP_FirstRulingFmtInDoc†
F_ObjHandleT
First ruling format in the list of the
document’s ruling formats
(FO_RulingFmt ID)
FP_FirstSelectedTiInDoc†
F_ObjHandleT
First selected text inset
in the list of selected text insets in
the document
(FO_TiApiClient,
FO_TiText,
FO_TiTextTable, or
FO_TiFlow ID)
FP_FirstSelected
GraphicInDoc†
F_ObjHandleT
First selected graphic object in the
list of selected graphic objects in
the document (FO_Graphic ID)
FP_FirstTblFmtInDoc†
F_ObjHandleT
First table format in the list of the
document’s table formats
(FO_TblFmt ID)
FP_FirstTblInDoc†
F_ObjHandleT
First table in the list of the
document’s tables (FO_Tbl ID)
FP_FirstTiInDoc†
F_ObjHandleT
First text inset in the list of the
document’s text insets
(FO_TiApiClient,
FO_TiText,
FO_TiTextTable, or
FO_TiFlow ID)
Property
790
FDK Programmer’s Reference
Documents
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
FP_FirstVarFmtInDoc†
F_ObjHandleT
First variable format in the list of
the document’s variable formats
(FO_VarFmt ID)
FP_FirstVarInDoc†
F_ObjHandleT
First variable in the list of the
document’s variables (FO_Var
ID)
FP_FirstXRefFmtInDoc†
F_ObjHandleT
First cross-reference format
in the list of the document’s crossreference formats (FO_XRefFmt
ID)
FP_FirstXRefInDoc†
F_ObjHandleT
First cross-reference in the list of
the document’s cross-references
(FO_XRef ID)
FP_HiddenPage†
F_ObjHandleT
Hidden page (FO_HiddenPage
ID)
FP_LastBodyPageInDoc†
F_ObjHandleT
Last body page in the document
(FO_BodyPage ID)
FP_LastMasterPageInDoc†
F_ObjHandleT
Last master page
(FO_MasterPage ID)
FP_LastRefPageInDoc†
F_ObjHandleT
Last reference page in the
document (FO_RefPage ID)
FP_LeftMasterPage†
F_ObjHandleT
Left master page
(FO_MasterPage ID)
FP_MainFlowInDoc†
F_ObjHandleT
Main flow (FO_Flow ID)
FP_MarkerTypeNames†
F_StringsT
List of markertype names
FP_NextOpenDocIn
Session†
F_ObjHandleT
Next open document in the list of
open documents in the session
(FO_Doc ID)
FP_ReviewerNameList
StringListT
List of all the reviewers who have
given review comments (using
Track Text Edits) for that
document
FP_RightMasterPage†
F_ObjHandleT
Right master page
(FO_MasterPage ID)
FP_SelectedTbl†
F_ObjHandleT
If any table cells are selected, the
ID of the table containing them
(FO_Tbl ID)
Property
FDK Programmer’s Reference 791
4
The DOCTYPE system identifier for the source XML document.
Documents
Type
Meaning
FP_ShowElementDescriptive
Names
IntT
If true, then show element
descriptive names in element
catalog, as specified in element
definition.
FP_TrackChangesAddedColor
F_ObjHandleT
Text color for the Added text.
FP_TrackChangesDeletedCol
or
F_ObjHandleT
Text color for the deleted text.
FP_UseInitialStructureOfA
utoInsertedElements
IntT
If true, then auto-insertion rules
will be processed recursively. For
example, if an element is inserted
automatically, and in the element
definition auto-insertion rules
exist for this element, then those
rules will also be processed.
Property
XMP Metadata
FrameMaker supports XMP Metadata, which is a protocol to store information about a
file as encoded packets that are available to external applications. This information is
similar to the information stored in the PDF Document Info dictionary. However, XMP
data can contain fields that have no counterpart in PDF Document Info.
FrameMaker maps the values of string pairs in FP_PDFDocInfo to XMP Metadata.
If an external application modifies the document’s metadata, these mapped fields will
be updated in FP_PDFDocInfo. Likewise, if you change a field in
FP_PDFDocInfo via the FDK, then FrameMaker will update the encoded XMP
packets to reflect this new information. The following table lists the supported fields.
External indicates that the field value can be changed by your client, an external
application, or the user interface. Internal indicates a field that FrameMaker
maintains—you cannot modify its value.
792
PDF Field:
XMP Field
Internal/External:
Author
dc:Creator
External
Title
dc:Title
External
Subject
dc:Description
External
Keywords
pdf:Keywords
External
Copyright
dc:Rights
External
FDK Programmer’s Reference
Documents
PDF Field:
XMP Field
Internal/External:
Web Statement
xapRights:WebStatement
External
Job Reference
xapBJ:JobRef
External
Marked
xapRights:Marked
External
Creation Date
xap:CreateDate
Internal
ModDate
xap:ModifyDate
Internal
Metadata Date
Metadata Date
Internal
Creator
pdf:CreatorTool
Internal (FrameMaker—not
displayed in a dialog box)
...
The DOCTYPE system identifier for the source XML document.
You can modify XMP data directly for a document by setting a value to the
FP_FileInfoPacket document property. The FDK sample clients include a client
that reads a text file and sets the file’s content to the FP_FilePacket property. XMP
uses the RDF syntax—see http://www.w3.org/1999/02/22-rdf-syntax-ns#, or print the
FP_FilePacket to the console to see the XMP syntax. XMP data can include UNICODE
characters. See “PDF Document Info dictionaries” (below) for information about
representing UNICODE in a StringT.
Document PDF properties
FO_Doc objects store information to use when you save the document as PDF.
PDF Document Info dictionaries The FP_PDFDocInfo property defines a list of
strings to enter in a PDF Document Info dictionary. In PDF, these strings can use
Unicode encoding.
The FP_PDFDocInfo property defines a list of strings to enter in a PDF Document Info
dictionary. For one dictionary entry, you provide two strings; the first is the entry name,
and the second is the entry content. The entry name can be up to 126 bytes; the entry
content can be up to 32765 characters.
The entry name is a string of bytes within the ASCII range. For non-printable ASCII,
provide Hex codes. To represent a Hex code, precede the code with the “#” character;
for example #24. To represent the “#” character, enter #23. Finally, an entry name may
not include a byte with a value of zero (#00).
The entry content can include Unicode encoding.
FDK Programmer’s Reference 793
4
The DOCTYPE system identifier for the source XML document.
Documents
PDF document properties FO_Doc objects have the following properties that
provide PDF information:
Type
Meaning
FP_AcrobatBookmark
DisplayTags
IntT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_PDFBookmarkDisplayTags
instead.
FP_DocAcrobatColumn
ArticleThreads
IntT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_DocPDFColumnArticle
Threads instead.
FP_DocAcrobatDefaults
Changed
IntT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_DocPDFDefaultsChanged
instead.
FP_DocAcrobatElement
List
F_StringsT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_DocPDFElementList instead.
FP_DocAcrobatElements
IntT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_DocPDFElements instead.
FP_DocAcrobatNoArticle
Threads
IntT
Retained in Version 6.0 or later for
backward compatibility. Use
FP_DocPDFNoArticleThreads
instead.
FP_DocPDFColumn
ArticleThreads
IntT
True if you want separate article
threads for each column, False if you
want separate article threads for each
text frame. Note that
FP_DocPDFNoArticleThread must
be false.
FP_DocPDFDefaults
Changed
IntT
True if the default heuristics for
determining the paragraph level are
disabled.
FP_DocPDFElement
List
F_StringsT
List of the element tags and context
labels to include in bookmarks.
FP_DocPDFElementList applies
only to structured documents.
Property
794
FDK Programmer’s Reference
Documents
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
FP_DocPDFElements
IntT
True if elements rather than paragraphs
are used for bookmarks.
FP_DocPDFElements applies only to
structured documents.
FP_DocPDFNoArticle
Threads
IntT
True if you do not want article threads
in the resulting PDF.
FP_GenerateAcrobatInfo
IntT
True if Generate Adobe Acrobat Data is
on. To generate PDF data, you must set
other document print properties as
follows:
Property

FP_PrintToFile: True

FP_PrintThumbnails:
False

FP_PrintSeps: False

FP_PrintBlankPages:
True

FP_PrintLastSheetFirst:
False

FP_PrintNumCopies: 1

FP_PrintOddPages: True

FP_PrintEvenPages: True
FP_PrintScale: 100%
FP_GeneratePDFInfo
IntT
True if Generate Adobe Acrobat Data
is on. To generate PDF data, you must
set other document print properties as
follows
FP_PrintToFile: True
FP_PrintThumbnails: False
FP_PrintSeps: False
FP_PrintBlankPages: True
FP_PrintLastSheetFirst: False
FP_PrintNumCopies: 1
FP_PrintOddPages: True
FP_PrintEvenPages: True
FP_PrintScale: 100%
FDK Programmer’s Reference 795
4
The DOCTYPE system identifier for the source XML document.
Documents
Property
FP_PDFAllNamed
Destinations
Type
Meaning
IntT
True if PDF generated from this book
will include Named Destinations for
every paragraph and FrameMaker
structure element in the document. This
results in a larger PDF filesize.
If False, the generated PDF will have
Named Destinations only for those
paragraphs and structure elements that
have already been marked with
FP_PDFDestinations
Marked = True.
FP_PDFBookmark
BoolT
True if the FrameMaker product will
generate bookmarks when saving as
PDF.
FP_PDFBookmarksOpenLev
el
IntT
The level of bookmarks to have
expanded when Acrobat opens the
generated PDF document. Can be any
integer, or one of the following defined
values:

FV_PDFBookmarksOpenDefaul
tLevel

FV_PDFBookmarksOpenAllLev
els

FV_PDFBookmarksOpenNoneLe
vel
If you specify an integer greater than the
number of levels in the Bookmarks
Settings,
FV_PDFBookmarksOpenAllLevels
takes effect.
FP_PDFBookmarkDisplay
Tags
796
FDK Programmer’s Reference
IntT
True if Include Paragraph Tags in
Bookmark Text is on (the paragraph tag
is added before the paragraph text in
each bookmark).
Documents
Property
FP_PDFDests
Marked
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
IntT
True if the book has documents with
paragraphs or elements marked via
FP_MarkedForNamedDestination.
One of two things must happen in order
for this property to be True: The
document was created in version 6.0 or
later; the document was opened in
version 6.0 or later, and the PDF
FileSize Optimization client was run
over it to mark all paragraphs or
elements that are targets of hypertext
links.
FP_PDFDistillerAbsent†
IntT
A value of 1 indicates that there is
no Acrobat Distiller available.
FP_PDFDocInfo
F_StringsT
A list of strings expressing values to be
set in the PDF Document Info dictionary
when you save the document as PDF.
Each dictionary entry is expressed as a
pair of strings; the first string expresses
the entry name, and the second string
expresses the entry value.
FP_PDFEndPage
StringT
The last page of the printing page range,
in the FrameMaker numbering style
FP_PDFJobOption
StringT
The name of the Distiller Job Options. If
the specified name does not exist in the
Distiller Job Options list, then the first
Distiller Job Option in the list is used.
FP_PDFJobOptionsAbsent
IntT
A value of 1 indicates that PDF Job
Options are not available.
FP_PDFOpenPage
StringT
The PDF page number, in the
FrameMaker numbering style, at
which Acrobat opens the generated
PDF document.
FP_PDFPageHeight
MetricT
Page height for the generated PDF.
FP_PDFPageWidth
MetricT
Page width for the generated PDF.
FP_PDFPrintPageRange
IntT
True for generating PDF for the the
specified page range; if False,
FrameMaker generates PDF for the
entire document or book.
†
FDK Programmer’s Reference 797
4
The DOCTYPE system identifier for the source XML document.
Documents
Property
FP_PDFRegistrationMark
s
FP_PDFSeparateFiles
Type
Meaning
IntT
Registration marks for the generated
PDF. May be one of:
IntT

FV_PDFRegistrationMarksNo
ne

FV_PDFRegistrationMarksWe
stern

FV_PDFRegistrationMarksTo
mbo
True, if a separate PDF file should be
generated for each document in a book.
This property can be set for single
documents, but is ignored in that case.
FP_PDFStartPage
StringT
The first page of the printing page range,
in the FrameMaker numbering style.
FP_PDFStructure
IntT
True if the document will create
structured PDF when you save it as PDF.
The structure is assigned via the
FP_PDFStructureLevel property of
FO_PgfFmt objects.
FP_PDFZoomFactor
MetricT
When FP_PDFZoomType is
FV_PDFZoomNone, the zoom
percentage of the PDF document (metric
25% to 1600%) If the number is
negative or zero,
FV_PDFZoomDefault takes effect.
FP_PDFZoomType
IntT
The PDF zoom setting with which
Acrobat opens the generated PDF
document. Can be one of:

FV_PDFZoomDefault

FV_PDFZoomPage

FV_PDFZoomWidth

FV_PDFZoomHeight

FV_PDFZoomNone
If a different value is specified,
FV_PDFZoomDefault takes effect.
798
FDK Programmer’s Reference
Documents
...
The DOCTYPE system identifier for the source XML document.
General document properties
FO_Doc objects have the following general properties.
Property
FP_BannerTextDispl
ay
Type
Meaning
BoolT
Specifies whether banner text should be
displayed in a doc. Here is an example of
usage:
F_ApiGetInt(FV_SessionId,
F_ObjHandleT docId,
FP_BannerTextDisplay);
F_ApiSetInt(FV_SessionId,
F_ObjHandleT docId,
FP_BannerTextDisplay,
True/False);
FP_ChapNumCompute
Method
IntT
The document’s chapter numbering type:
FV_NUM_CONTINUE: Continue the
numbering from the previous chapter.
FV_NUM_RESTART: Use the value
specified for FP_ChapterNumber.
FV_NUM_SAME: Use the same chapter
number as for the previous file.
FP_ChapterNumber
IntT
If FP_ChapNumComputeMethod is
FV_NUM_RESTART, use this as the chapter
number
FDK Programmer’s Reference 799
4
The DOCTYPE system identifier for the source XML document.
Documents
Property
FP_ChapterNumStyle
Type
Meaning
IntT
The numbering style; one of:
FV_NUMSTYLE_NUMERIC: Arabic.
FV_NUMSTYLE_ROMAN_UC: Roman
numerals, uppercase.
FV_NUMSTYLE_ROMAN_LC: Roman,
lowercase.
FV_NUMSTYLE_ALPHA_UC: Alphabetic,
uppercase.
FV_NUMSTYLE_ALPHA_LC: Alphabetic,
lowercase.
FV_NUMSTYLE_KANJI: Kanji.
FV_NUMSTYLE_ZENKAKU: Zenkaku.
FV_NUMSTYLE_ZENKAKU_UC: Zenkaku,
uppercase.
FV_NUMSTYLE_ZENKAKU_LC: Zenkaku,
lowercase.
FV_NUMSTYLE_KANJI_KAZU: Kazu.
FV_NUMSTYLE_DAIJI: Daiji.
FV_NUMSTYLE_TEXT: Text.
800
FP_ChapterNumText
StringT
If FP_ChapNumStyle is
FV_NUMSTYLE_TEXT, use this string as the
chapter number.
FP_Dictionary
F_StringsT
List of words to accept when spell- checking
the document.
FP_DocIsHelp†
Int
True if the document is the FrameMaker
product’s Help document.
FP_DocIsModified†
IntT
True if document has been modified. While
this property is read-only, you can modify a
document without setting this property to
True by setting FP_Untouchable to True
for the document before your client modifies
it.
FP_DocIsViewOnly
IntT
True if document is View Only.
FDK Programmer’s Reference
Documents
Property
FP_DocOpenType†
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
IntT
Type of document the file was opened as:
FV_DOC_TYPE_BINARY: Frame binary
document
FV_DOC_TYPE_TEXT: ASCII text document
FV_DOC_TYPE_MIF: MIF document
FV_DOC_TYPE_FILTER: a filtered
document
FP_DocSaveType†
IntT
Type of document the file is saved as:
FV_DOC_TYPE_BINARY: Frame binary
document
FV_DOC_TYPE_TEXT: ASCII text document
FV_DOC_TYPE_MIF: MIF document
FV_DOC_TYPE_FILTER: a filtered
document
FP_DontUpdateText
Insets
IntT
True if FrameMaker product doesn’t
automatically update text insets when it
opens the document.
FP_DontUpdateXRefs
IntT
True if FrameMaker product doesn’t
automatically update cross-references when
it opens or prints the document.
FP_FormatOverride
IntT
Specfies whether there are
format overrides at the current insertion
point.
If the insertion point is in a text range that has
a character format applied to it,
FP_FormatOverride is True if (and
only if) the text formatting at the insertion
point overrides the
character format.
If the insertion point is in a text range that has
does not have a character format applied to
it, FP_FormatOverride is True if
(and only if) the paragraph containing the
insertion point has formatting
that overrides the Paragraph
Catalog format.
FP_IsOnScreen
IntT
True if document is visible on
the screen.
FDK Programmer’s Reference 801
4
The DOCTYPE system identifier for the source XML document.
Documents
Type
Meaning
FP_LineNumDistance
MetricT
Sets the line number display width, that is,
the space in which the line numbers are
displayed.
FP_LineNumRestart
IntT
If set, restarts line number display on each
page.
FP_LineNumShow
IntT
If set, enables the line number display.
FP_Name†
StringT
Filename of the document.
FP_PageNumCompute
Method
IntT
The component document’s page numbering
type:
Property
FV_NUM_CONTINUE: Continue the
numbering from the previous file.
FV_NUM_RESTART: Restart numbering at
the value specified by the
FP_FirstPageNum property.
FP_PgfNumCompute
Method
IntT
The document’s paragraph numbering type:
FV_NUM_CONTINUE: Continue the
numbering from the previous file.
FV_NUM_RESTART: Restart numbering at
1.
FP_PreviewState
Int
Determines the preview state of the
document when track changes is enabled.
Valid values are:
FV_PREVIEW_OFF_TRACK_CHANGE:
Turn off preview
FV_PREVIEW_ON_ORIGINAL:Turn on
preview while showing the original content.
Shows the original state of document as if all
the tracked changes were rejected
FV_PREVIEW_ON_FINAL: Turn on
preview while showing the final content.
Shows the final state of document as if all the
tracked changes were accepted.
802
FDK Programmer’s Reference
Documents
Property
FP_StatusLine
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
StringT
String that appears in the document status
bar. Note that this property always returns an
empty string; it is effectively write-only
If you set FP_StatusLine to a string
other than an empty string (""), the string
will remain in the status bar until you reset it.
To reset FP_StatusLine so the
FrameMaker product automatically updates
the status line with normal status
information, set it to an empty string ("").
FP_TextSelection
F_TextRangeT
The currently selected text range or insertion
point in the document.
FP_Untouchable
IntT
False by default. Setting this to True
allows your client to modify a document
without the FrameMaker product setting
FP_DocIsModified to True.
FP_ViewOnlyWin
Palette
Int
True if document acts like a palette when it
is View Only.
FP_VolNumCompute
Method
IntT
The document’s volume numbering type:
FV_NUM_CONTINUE: Continue the
numbering from the previous volume.
FV_NUM_RESTART: Use the value
specified for FP_VolumeNumber.
FV_NUM_SAME: Use the same volume
number as for the previous file.
FP_VolumeNumber
IntT
If FP_VolNumComputeMethod is
FV_NUM_RESTART, use this as the volume
number
FDK Programmer’s Reference 803
4
The DOCTYPE system identifier for the source XML document.
Documents
Property
FP_VolumeNumStyle
Type
Meaning
IntT
The numbering style; one of:
FV_NUMSTYLE_NUMERIC: Arabic.
FV_NUMSTYLE_ROMAN_UC: Roman
numerals, uppercase.
FV_NUMSTYLE_ROMAN_LC: Roman
numerals,lowercase.
FV_NUMSTYLE_ALPHA_UC: Alphabetic,
uppercase.
FV_NUMSTYLE_ALPHA_LC: Alphabetic,
lowercase.
FV_NUMSTYLE_KANJI: Kanji.
FV_NUMSTYLE_ZENKAKU: Zenkaku.
FV_NUMSTYLE_ZENKAKU_UC: Zenkaku,
uppercase.
FV_NUMSTYLE_ZENKAKU_LC: Zenkaku,
lowercase.
FV_NUMSTYLE_KANJI_KAZU: Kazu.
FV_NUMSTYLE_DAIJI: Daiji.
FV_NUMSTYLE_TEXT: Text.
FP_VolumeNumText
StringT
If FP_VolNumStyle is
FV_NUMSTYLE_TEXT, use this string as the
chapter number.
Document change bar properties
FO_Doc objects have the following properties that specify how change bars appear in
a document.
Type
Meaning
FP_AutoChangeBars
IntT
True if Automatic Change Bars is
enabled
FP_ChangeBarColor
F_ObjHandleT
The spot color (FO_Color ID)
FP_ChangeBarDistance
MetricT
Distance between change bar and text
column
Property
804
FDK Programmer’s Reference
Documents
Property
FP_ChangeBarPosition
Type
Meaning
IntT
Position of change bars:
...
The DOCTYPE system identifier for the source XML document.
FV_CB_COL_LEFT: Left of Column
FV_CB_COL_RIGHT: Right of
Column
FV_CB_COL_NEAREST: Side Nearest
to Page Edge
FV_CB_COL_FURTHEST: Side
Farthest from Page Edge
FP_ChangeBarThickness
MetricT
Width of change bars
Document condition properties
FO_Doc objects have the following properties that specify the conditional text
expression and how conditional text appears in a document.
Type
Meaning
FP_BooleanConditionExpr
ession
StringT
Returns or sets the value of the active
Boolean conditional expression for the
document. Different from attribute
conditional expression. This
expression is created with conditional
tags while attribute conditional
expression is based on attribute values.
FP_BooleanConditionExpr
essionTag
StringT
Returns or sets the name of the active
Boolean conditional expression for the
document.
FP_ShowAll
IntT
True if all conditions are displayed
FP_ShowCondIndicators
IntT
True if condition indicators (format
overrides) are displayed
FP_BooleanConditionStat
e
IntT
True if Boolean conditional
expressions are used to Show / Hide
conditional text.
Property
Note: If you want to set the Boolean
conditional expression for the
document, you will also need to set
this property to True.
FDK Programmer’s Reference 805
4
The DOCTYPE system identifier for the source XML document.
Documents
Document equation properties
FO_Doc objects have the following properties that specify the appearance of all
equations in the document.
Type
Meaning
FP_EqnIntegralSizeLarge
MetricT
Point size of integral symbol in large
equations (2 pt to 400 pt)
FP_EqnIntegralSizeMed
MetricT
Point size of integral symbol in
medium equations (2 pt to 400 pt)
FP_EqnIntegralSizeSmall
MetricT
Point size of integral symbol in small
equations (2 pt to 400 pt)
FP_EqnLevel1SizeLarge
MetricT
Point size of level 1 expression in large
equations (2 pt to 400 pt)
FP_EqnLevel1SizeMed
MetricT
Point size of level 1 expression in
medium equations (2 pt to 400 pt)
FP_EqnLevel1SizeSmall
MetricT
Point size of level 1 expression in small
equations (2 pt to 400 pt)
FP_EqnLevel2SizeLarge
MetricT
Point size of level 2 expression in large
equations (2 pt to 400 pt)
FP_EqnLevel2SizeMed
MetricT
Point size of level 2 expression in
medium equations (2 pt to 400 pt)
FP_EqnLevel2SizeSmall
MetricT
Point size of level 2 expression in small
equations (2 pt to 400 pt)
FP_EqnLevel3SizeLarge
MetricT
Point size of level 3 expression in large
equations (2 pt to 400 pt)
FP_EqnLevel3SizeMed
MetricT
Point size of level 3 expression in
medium equations (2 pt to 400 pt)
FP_EqnLevel3SizeSmall
MetricT
Point size of level 3 expression in small
equations (2 pt to 400 pt)
FP_EqnSigmaSizeLarge
MetricT
Point size of sigma symbol in large
equations (2 pt to 400 pt)
FP_EqnSigmaSizeMed
MetricT
Point size of sigma symbol in medium
equations (2 pt to 400 pt)
FP_EqnSigmaSizeSmall
MetricT
Point size of sigma symbol in small
equations (2 pt to 400 pt)
Property
806
FDK Programmer’s Reference
Documents
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
FP_Functions
StringT
Character format tag of equation font to
apply to Math Functions
FP_Numbers
StringT
Character format tag of equation font to
apply to Math Numbers
FP_Strings
StringT
Character format tag of equation font to
apply to Math Strings
FP_Symbols
StringT
Character format tag of equation font to
apply to Math Symbols
FP_SymbolsList†
F_StringsT
List of math symbol fonts used in
Equation Fonts dialog box
FP_Variables
StringT
Character format tag of equation font to
apply to Math Variables
FP_VerticalTrackingLarg
e
MetricT
Vertical tracking in large equations
FP_VerticalTrackingMedi
um
MetricT
Vertical tracking in medium equations
FP_VerticalTrackingSmal
l
MetricT
Vertical tracking in small equations
Property
Document hypertext properties
FO_Doc objects have the following properties that specify whether to parse and
validate a hypertext command, and indicate the results of the parsing and validation.
To parse a hypertext command, set the value of FP_HypertextCommandText to the
command you want to parse. Setting the string executes the parser, and if
FP_HypertextDoValidate is true, setting the string executes validation as well.
Type
Meaning
FP_HypertextDoValidate
BoolT
True if the next hypertext string sent to
FP_HypertextCommandText will be
validated
FP_HypertextCommandText
StringT
The hypertext command to parse.
Setting this value executes the parser. If
FP_HypertextDoValidate is True,
the command will be parsed and
validated.
Property
FDK Programmer’s Reference 807
4
The DOCTYPE system identifier for the source XML document.
Documents
Type
Meaning
FP_HypertextParsedArgs†
StringLi
stT
The value of
FP_HypertextCommand, parsed into
individual tokens
FP_HypertextParseErr†
IntT
Non-zero if there was a parse error. See
“FP_HypertextParseErr” on page 809.
FP_HypertextValidateErr†
IntT
Non-zero if
FP_HypertextDoValidate was true
and there was a validation error. See
“FP_HypertextValidateErr” on
page 810.
FP_HypertextParseBad
Param†
IntT
If there was a parse error, an index into
the FP_HypertextParsedArgs
string list.
FP_HypertextParseErrMsg†
StringT
The message FrameMaker generates for
a parse error
FP_HypertextParsedCmd
Code†
IntT
The FrameMaker hypertext command in
FP_HypertextCommandText, as
determined by the parser. See
“Command codes” on page 811.
FP_HypertextParsedCmd
Dest†
IntT
For link commands, the destination type
in FP_HypertextCommandText, as
determined by the parser. See “Link
destinations” on page 812.
FP_HypertextParsedCmd
DestObjType†
IntT
For links to objects, the type of the
object in the target document. See “Link
destination object types” on page 813.
FP_HypertextParsedCmd
DestObjID†
IntT
For links to objects, the UID of the
object in the target document.
FP_HypertextParsedCmd
MatrixRows†
IntT
If FP_HypertextParsedCmdCode is
FV_CmdMatrix, the number of rows in
the matrix.
FP_HypertextParsedCmd
MatrixColumns†
IntT
If FP_HypertextParsedCmdCode is
FV_CmdMatrix, the number of
columns in the matrix.
FP_HypertextParsed
LinkName†
StringT
For links to named targets, either the
value of a newlink command, or a
keyword such as FirstPage or
LastPage.
Property
808
FDK Programmer’s Reference
Documents
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
FP_HypertextParsed
PageName†
StringT
For links to pages, the page number.
FP_HypertextParsed
FlowName†
StringT
For popup and matrix commands, the
name of the flow (on a reference page)
that contains the popup or matrix list of
commands.
FP_HypertextParsed
ClientName†
StringT
For message commands, the name of the
API client to receive the message.
FP_HypertextParsed
Title†
StringT
If FP_HypertextParsedCmdCode is
FV_CmdAlertTitle, the specified
title for the alert box.
FP_HypertextParsed
Message†
StringT
If FP_HypertextParsedCmdCode is
FV_CmdAlert, FV_CmdAlerTitle,
or FV_CmdMessage, the specified
message for the hypertext command.
FP_HypertextParsed
DIFileName†
StringT
For links to external files, the absolute
path to the target file, expressed in
platform independent syntax.
Property
FP_HypertextParseErr The following table shows error codes to which
FP_HypertextParseErr can be set:
Value
Meaning
FV_HypertextSyntaxOK
No parse errors
FV_HypertextEmptyComma
nd
Hypertext string is empty
FV_Hypertext
UnrecognizedCommand
Cannot map the first keyword to an existing
FP_HypertextParsedCmdCode
FV_HypertextMissing
Arguments
One or more arguments required for the command is missing
FV_HypertextExtra
Arguments
More than the required number of arguments for the
command; extra arguments were ignored
FV_HypertextBadSyntax
PathSpec
File reference expected for this command, but no valid
filepath found
FDK Programmer’s Reference 809
4
The DOCTYPE system identifier for the source XML document.
Documents
Value
Meaning
FV_HypertextUnanchored
PartialPath
File reference is relative to the current document, but the
current document has not been saved; file location could not
be calculated
FV_HypertextHelpDirNot
Found
Default help directory either does not exist (help was not
installed) or cannot be found
FV_HypertextExpectedA
NumberParam
Command expected a number but got text; check
FP_HypertextParseBadParam
FP_HypertextValidateErr The following table shows error codes to which
FP_HypertextValidateErr can be set:
Value
810
Meaning
FV_HypertextValid
No validation errors
FV_HypertextUses
DefaultText
Default text was found as an argument; are you sure the
default text is what you want?
FV_HypertextFileNot
Regular
The referenced file could not be found, or is not a regular
file; for example, it could be a directory name
FV_HypertextFileNot
MakerDoc
The referenced file is not made by a FrameMaker product
FV_HypertextCantOpen
DestFile
Can’t open the file; perhaps you don’t have permission,
or the file is locked
FV_HypertextDestination
LinkNotFound
The referenced file is valid, but can’t find the named link
within it
FV_HypertextPageNameNot
Found
The referenced file is valid, but can’t find the specified
page
FV_HypertextUnrecognized
ObjectType
The referenced file is valid, but the link is to an object
with an unrecognized object type
FV_HypertextObjectIDNot
Found
A link to an object, but can’t find the object
FV_HypertextBadMatrix
Size
One or both of the matrix dimensions is bad; must be
between 1 and 99
FV_HypertextMatrix
CommandInvalid
One of the cammands in the reference page flow for a
matrix command has a parse or validation error
FV_HypertextFlowMissing
Lines
The reference flow for a matrix or popup command is
missing one or more lines
FDK Programmer’s Reference
Documents
Value
...
The DOCTYPE system identifier for the source XML document.
Meaning
FV_HypertextNoNamedFlow
Can’t find the named reference flow for a matrix or
popup command
FV_HypertextRecursive
Flow
The reference flow for a matrix or popup command
contains nested popup or matrix commands that name a
parent reference flow
FV_HypertextMissingPopup
Marker
At least one entry in the popup command’s reference
flow has no hypertext marker in it
FV_HypertextMissingPopup
LabelItem
One entry in the popup command’s reference flow has no
text in it
FV_HypertextEmptyLineIn
MiddleOfPopup
One entry in the popup command’s reference flow has no
text in it
FV_HypertextCommand
IllegalWithinPopup
Invalid command in the popup command’s reference
flow; for example, matrix or newlink
FV_HypertextFcodeInvalid
Invalid FCode in the hypertext command
Command codes The following table shows the possible values for
FP_HypertextParsedCmdCode:
Value
Meaning
FV_CmdError
Parser is in an error state
FV_CmdUnknown
Unknown command
FV_CmdNoop
Command causes no event
FV_CmdAlert
alert command
FV_CmdAlertTitle
alerttitle command
FV_CmdExit
exit commant
FV_CmdGoToLink
gotolink command
FV_CmdGoToLinkFitWin
gotolinkfitwin command
FV_CmdGoToNew
gotonew command
FV_CmdGoToPage
gotopage command
FV_CmdGoToObjectId
gotoObjectId command
FV_CmdGoToObjectIdFitWin
gotoObjectIdfitwin command
FDK Programmer’s Reference
811
4
The DOCTYPE system identifier for the source XML document.
Documents
Value
Meaning
FV_CmdMatrix
matrix command
FV_CmdMessage
message command
FV_CmdNewLink
newlink command
FV_CmdNextPage
nextpage command
FV_CmdOpenLink
openlink command
FV_CmdOpenLinkFitWin
openlinkfitwin command
FV_CmdOpenNew
opennew command
FV_CmdOpenObjectId
openObjectId command
FV_CmdOpenObjectIdFitWin
openObjectIdfitwin command
FV_CmdOpenPage
openpage command
FV_CmdPopup
popup command
FV_CmdPreviousLink
previouslink command
FV_CmdPreviousLinkFitWin
previouslinkfitwin command
FV_CmdPreviousPage
previouspage command
FV_CmdQuit
quit command
FV_CmdQuitAll
quitall command
Link destinations The following table shows the possible values for
FP_HypertextParsedCmdDest:
Value
812
Meaning
FV_DestNowhere
No destination found
FV_DestMarkerNewLink
Destination is a newlink
FV_DestFirstPage
Destination is the first page of a file
FV_DestLastPage
Destination is the last page of a file
FV_DestPageNum
Destination is a named page (usually a page number)
FV_DestFluidFlow
Destination is to a fluid flow document
FDK Programmer’s Reference
Documents
Value
...
The DOCTYPE system identifier for the source XML document.
Meaning
FV_DestMarker
Destination is a marker
FV_DestObjectId
Destination is an object ID (usually for generated hypertext
commands)
FV_DestXRef
Destination is a cross-reference
Link destination object types The following table shows the possible values for
FP_HypertextParsedCmdDestObjType:
Value
Meaning
FV_ObjectUnknown
Unknown or invalid object
FV_ObjectMarker
Object is a marker
FV_ObjectPgf
Object is a paragraph
FV_ObjectXref
Object is a cross-reference
FV_ObjectGraphic
Object is a graphic
FV_ObjectElement
Object is an element
FV_ObjectTextInset
Object is a text inset
FV_ObjectDataLink
Object is subscribed data
Document menu properties
FO_Doc objects have the following properties that specify a document’s menu bars.
Type
Meaning
FP_MenuBar
F_ObjHandleT
The ID of the document’s menu bar
(FO_Menu ID)
FP_ViewOnlyMenuBar
F_ObjHandleT
The ID of the document’s menu bar when
the document is locked (FO_Menu ID)
Property
FDK Programmer’s Reference 813
4
The DOCTYPE system identifier for the source XML document.
Documents
Document footnote properties
FO_Doc objects have the following properties that specify the appearance of footnotes
in a document.
Type
Meaning
FP_FnCustNumString
StringT
Characters for custom document footnote
numbers
FP_FnFirstNum
IntT
First document footnote number
FP_FnFmt
StringT
Paragraph tag of footnote
FP_FnHeightPerCol
MetricT
Maximum height allowed for document
footnotes (36 pt to 32767 pt)
FP_FnInstancePosition
IntT
Placement of document footnote number in
footnote:
Property
FV_FN_POS_SUPER: Superscript
FV_FN_POS_BASELINE: Baseline
FV_FN_POS_SUB: Subscript
FP_FnInstancePrefix
StringT
Prefix to appear before document footnote
number in footnote
FP_FnInstanceSuffix
StringT
Suffix to appear after document footnote
number in footnote
FP_FnNumCompute
Method
IntT
The document’s footnote numbering type:
FV_NUM_CONTINUE: Continue the
numbering from the previous file.
FV_NUM_RESTART: Restart numbering at the
value specified by the associated FO_Doc
object’s FP_FnFirstNum property.
FV_NUM_PER_PAGE: Restart numbering on
each page.
FP_FnNumberingPerPage
IntT
Obsolete for version 6.0 and later; use
FP_FnNumComputeMethod instead.
Retained for backward compatibility; you do
not need to set FAPI_55_BEHAVIOR to use
this property.
True if document footnote numbering is by
page, rather than by flow
814
FDK Programmer’s Reference
Documents
Property
FP_FnNumStyle
Type
Meaning
IntT
Document footnote numbering style:
...
The DOCTYPE system identifier for the source XML document.
FV_FN_NUM_NUMERIC: Arabic
FV_FN_NUM_ROMAN_UC: Roman uppercase
FV_FN_NUM_ROMAN_LC: Roman lowercase
FV_FN_NUM_ALPHA_UC: Alphabetic
uppercase
FV_FN_NUM_ALPHA_LC: Alphabetic
lowercase
FV_FN_NUM_KANJI: Kanji characters
FV_FN_NUM_ZENKAKU: Zenkaku
FV_FN_NUM_ZENKAKU_UC: Zenkaku
uppercase
FV_FN_NUM_ZENKAKU_LC: Zenkaku
lowercase
FV_FN_NUM_KANJI_KAZU: Kazu
FV_FN_NUM_DAIJI: Daiji
FV_FN_NUM_CUSTOM: Custom numbering
FP_FnRefPosition
IntT
Position of footnote reference in document
text:
FV_FN_POS_SUPER: Superscript
FV_FN_POS_BASELINE: Baseline
FV_FN_POS_SUB: Subscript
FP_FnRefPrefix
StringT
Prefix to appear before number in document
text
FP_FnRefSuffix
StringT
Suffix to appear after number in document text
FDK Programmer’s Reference 815
4
The DOCTYPE system identifier for the source XML document.
Documents
Document flow properties
The following properties were FO_Doc properties in earlier versions of the FDK. In
the current version of the FDK, they are FO_Flow properties. They are no longer valid
FO_Doc properties.
Type
Meaning
FP_MaxInterlinePadding
MetricT
Not a valid FO_Doc property in the current
version of the FDK. See “FO_Flow” on
page 837.
FP_MaxInterPgfPadding
MetricT
Not a valid FO_Doc property in the current
version of the FDK. See “FO_Flow” on
page 837.
Property
Document page properties
FO_Doc objects have the following properties that specify page appearance.
Type
Meaning
FP_BottomMargin
MetricT
Bottom page margin
FP_ColGap
MetricT
Size of gap between text columns
FP_DocIsDoubleSided
IntT
True if two-sided page layout
FP_FirstPageNum
IntT
Page number of first page
FP_FirstPageVerso
IntT
False for right first page; True for left first
page
FP_LeftMargin
MetricT
Left page margin
FP_NumCols†
IntT
Number of columns
FP_PageHeight
MetricT
Height of the document’s pages. Setting this
property automatically sets the
FP_PageHeight property of all of the
document’s body pages.
FP_PageNumCompute
Method
IntT
The document’s page numbering type:
Property
FV_NUM_CONTINUE: Continue the numbering
from the previous file.
FV_NUM_RESTART: Restart numbering at the
value specified by the associated FO_Doc
object’s FP_FirstPageNum property.
816
FDK Programmer’s Reference
Documents
Property
FP_PageNumStyle
Type
Meaning
IntT
Page numbering style:
...
The DOCTYPE system identifier for the source XML document.
FV_PAGE_NUM_NUMERIC: Arabic
FV_PAGE_NUM_ROMAN_UC: Roman uppercase
FV_PAGE_NUM_ROMAN_LC: Roman lowercase
FV_PAGE_NUM_ALPHA_UC: Alphabetic
uppercase
FV_PAGE_NUM_ALPHA_LC: Alphabetic
lowercase
FV_PAGE_NUM_KANJI: Kanji characters
FV_PAGE_NUM_ZENKAKU: Zenkaku
FV_PAGE_NUM_ZENKAKU_UC: Zenkaku
uppercase
FV_PAGE_NUM_ZENKAKU_LC: Zenkaku
lowercase
FV_PAGE_NUM_KANJI_KAZU: Kazu
FV_PAGE_NUM_DAIJI: Daiji
FP_PageRounding
IntT
How to round pages:
FV_PR_DEL_EMPTY: Delete Empty Pages
FV_PR_KEEP_NUM_EVEN: Make Page Count
Even
FV_PR_KEEP_NUM_ODD: Make Page
Count Odd
FV_PR_DONT_CHANGE: Don’t Change
Page Count
FP_PageWidth
MetricT
Width of the document’s pages. Setting this
property automatically sets the
FP_PageWidth property of all of the
document’s body pages.
FDK Programmer’s Reference 817
4
The DOCTYPE system identifier for the source XML document.
Documents
Property
FP_PointPageNumStyle
Type
Meaning
IntT
Point page numbering style:
FV_POINT_PAGE_NUM_NUMERIC: Arabic
FV_POINT_PAGE_NUM_ROMAN_UC: Roman
uppercase
FV_POINT_PAGE_NUM_ROMAN_LC: Roman
lowercase
FV_POINT_PAGE_NUM_ALPHA_UC:
Alphabetic uppercase
FV_POINT_PAGE_NUM_ALPHA_LC:
Alphabetic lowercase
FV_POINT_PAGE_NUM_KANJI: Kanji
characters
FV_POINT_PAGE_NUM_ZENKAKU: Zenkaku
FV_POINT_PAGE_NUM_ZENKAKU_UC:
Zenkaku uppercase
FV_POINT_PAGE_NUM_ZENKAKU_LC:
Zenkaku lowercase
FV_POINT_PAGE_NUM_KANJI_KAZU: Kazu
FV_POINT_PAGE_NUM_DAIJI: Daiji
818
FP_RightMargin
MetricT
Right page margin
FP_SmartQuotes
IntT
True if Smart Quotes is enabled
FP_SmartSpaces
IntT
True if Smart Spaces is enabled
FP_TopMargin
MetricT
Top page margin
FDK Programmer’s Reference
Documents
...
The DOCTYPE system identifier for the source XML document.
Document print properties
FO_Doc objects have the following properties that specify how a document is printed.
Property
FP_DownloadFonts
Type
Meaning
IntT
The fonts to download to the printer when
printing. The default is
FV_PR_DOWNLOAD_NONE.
Can be one of:
FV_PR_DOWNLOAD_NONE
FV_PR_DOWNLOAD_ALL
FV_PR_DOWNLOAD_ALL_BUT_
STANDARD_13
FV_PR_DOWNLOAD_ALL_BUT_
STANDARD_35
FP_PrintBlankPages
IntT
True if FP_PageRounding allows empty
page at end of document.
FP_PrintCollated
IntT
True if Collate is enabled.
FP_PrintCols
IntT
If FP_PrintThumbnails is True, the
number of columns to print.
FP_PrintEmulsion
IntT
Direction of print emulsion:
FV_EMUL_UP: Emulsion side up
FV_EMUL_DOWN: Emulsion side down
FP_PrintEndPage
IntT
Number of last page to print. Note that the
value of FP_DocFluidFlow must be 0; you
can’t print a range of pages when a document
is in fluid view.
FP_PrintEndPageName
IntT
Page number string for the last page to print;
use this when the pages are numbered with a
style other than FV_PAGE_NUM_NUMERIC.
Note that the value of FP_DocFluidFlow
must be 0; you can’t print a range of pages
when a document is in fluid view.
FP_PrintEndPoint
IntT
Number of last point page to print.
FP_PrinterName
StringT
Name of printer. Setting FP_PrinterName
on Windows has no effect. When you set
FP_PrinterName, you can set the printer to
the default printer by specifying NULL.
FP_PrintEvenPages
IntT
True if Print Even-Numbered Pages is
enabled.
FDK Programmer’s Reference 819
4
The DOCTYPE system identifier for the source XML document.
Documents
Type
Meaning
FP_PrintFileName
StringT
Filename of file to print to. When you set
FP_PrintFileName, you can set the
filename to the default filename by
specifying NULL.
FP_PrintImaging
IntT
Type of print imaging:
Property
FV_IMG_POSITIVE
FV_IMG_NEGATIVE
FP_PrintLastSheetFirst
IntT
True if Last Sheet First is enabled.
FP_PrintLowRes
IntT
True if Low-Resolution is enabled.
FP_PrintManualFeed
IntT
True if Manual Feed is enabled.
FP_PrintNumCopies
IntT
Number of copies to print.
FP_PrintOddPages
IntT
True if Odd-Numbered Pages is enabled.
FP_PrintPaperHeight
MetricT
Height of paper.
FP_PrintPaperWidth
MetricT
Width of paper.
FP_PrintRegistration
Marks
IntT
True if Registration Marks is enabled.
FP_PrintRows
IntT
If FP_PrintThumbnails is True, the
number of rows to print.
FP_PrintScale
IntT
Scale factor.
FP_PrintScope
IntT
Pages to print. Note that the value of
FP_DocFluidFlow must be 0; you can’t
print a range of pages when a document is in
fluid view.
FV_PR_ALL: Print all pages
FV_PR_RANGE: Print a range of pages
820
FP_PrintSeps
IntT
True if Print Separations is enabled.
FP_PrintStartPage
IntT
Number of first page to print. Note that the
value of FP_DocFluidFlow must be 0; you
can’t print a range of pages when a document
is in fluid view.
FDK Programmer’s Reference
Documents
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
FP_PrintStartPage
Name
IntT
Page number string for the first page to print;
use this when the pages are numbered with a
style other than FV_PAGE_NUM_NUMERIC.
Note that the value of FP_DocFluidFlow
must be 0; you can’t print a range of pages
when a document is in fluid view.
FP_PrintStartPoint
IntT
Number of first point page to print.
FP_PrintThumbnails
IntT
True if Print Thumbnails is enabled.
FP_PrintToFile
IntT
True if Print Only to File is enabled.
FP_SkipBlankSeps
IntT
True if Skip Blank Separations is enabled
(don’t print blank color separations).
FP_TomboMarks
BoolT
True if registration marks are enabled, and
set to Tombo. When printing Tombo Marks
via the API, you must also set
FP_PrintRegistrationMarks to True.
FP_Trapwise
Compatibility
BoolT
True if Trapwise Compatibility is enabled.
Setting this to True automatically sets
FP_PrintToFile to True and
FP_PrintSep to False.
Property
Document rubi properties
FO_Doc objects have the following properties that specify formatting for rubi
composites:
FP_NarrowRubiSpaceForKanji
IntT
Allowable values are:
FV_Wide
FV_Narrow
FV_Proportional
FP_NarrowRubiSpaceForOther
IntT
Allowable values are:
FV_Wide
FV_Narrow
FV_Proportional
FP_RubiAlignAtBoundaries
IntT
TRUE if rubi and oyamoji text
should be aligned at line
boundaries
FP_RubiOverhang
IntT
TRUE if rubi is allowed to overhang
FDK Programmer’s Reference 821
4
822
The DOCTYPE system identifier for the source XML document.
Documents
FP_RubiSize
MetricT
Scaling factor for rubi text
expressed as percentage of the
current font size (metric 1% to
1000%). If this property and the
FP_RubiFixedSize property
both have values, the most recently
set property value is used.
FP_RubiFixedSize
MetricT
Fixed size for all rubi text (metric
2pts to 400pts). If this property and
the FP_RubiSize property both
have values, the most recently set
property value is used.
FP_WideRubiSpaceForKanji
IntT
Allowable values are:
FV_Wide
FV_Narrow
FV_Proportional
FP_WideRubiSpaceForOther
IntT
Allowable values are:
FV_Wide
FV_Narrow
FV_Proportional
FDK Programmer’s Reference
Documents
...
The DOCTYPE system identifier for the source XML document.
Document selection properties
FO_Doc objects have the following properties that specify the selected text or graphics
in a document.
Type
Meaning
FP_FirstSelected
GraphicInDoc†
F_ObjHandleT
First selected graphic object in the
document’s list of selected graphic
objects (FO_Graphic ID).
FP_Element
Selection
F_ElementRangeT
The currently selected element range in
the document. For information on
getting and setting the text selection or
insertion point in terms of elements, see
“How the API represents the element
selection in a structured FrameMaker
document” in the FDK Programmer’s
Guide.
FP_SelectedTbl†
F_ObjHandleT
If any table cells are selected, the ID of
the table containing them
(FO_Tbl ID). For information on
getting and setting table selections, see
“Getting the IDs of selected tables and
table rows” in the FDK Programmer’s
Guide.
FP_FirstSelected
TiInDoc†
F_ObjHandleT
First selected text inset in the list of
selected text insets in the document
(FO_TiApiClient, FO_TiText,
FO_TiTextTable, or FO_TiFlow
ID).
FP_TextSelection
F_TextRangeT
The currently selected text range or
insertion point in the document. For
information on getting and setting the
text selection or insertion point in a
document, see “Getting and setting the
insertion point or text selection” in the
FDK Programmer’s Guide.
Property
For information on how the API represents selected text and graphics, see “How the
API represents the selection in a document” in the FDK Programmer’s Guide. For
information on getting and setting the structural element selection structured
documents, see “Getting and setting the structural element selection” in the FDK
Programmer’s Guide.
FDK Programmer’s Reference 823
4
The DOCTYPE system identifier for the source XML document.
Documents
Document structure properties
FO_Doc objects have the following structure properties, which apply only to structured
documents.
Type
Meaning
FP_CustomElementList
F_StringsT
List of tags to display when
FP_ElementCatalogDisplay
is set to FV_ELCAT_CUSTOM.
FP_DefaultExclusions
F_StringsT
List of exclusions inherited when
document is included in a
structured book.
FP_DefaultInclusions
F_StringsT
List of inclusions inherited when
document is included in a
structured book.
FP_ElementBoundary
Display
IntT
Element boundary display options:
Property
FV_ELEM_DISP_NONE: don’t
display any element boundaries
FV_ELEM_DISP_BRACKETS:
display the bracketed boundaries
FV_ELEM_DISP_TAGS: display
the element tags
FP_ElementCatalog
F_Element
CatalogEntriesT
List of elements in Element
Catalog.
FP_ElementCatalog
Display
IntT
Catalog display options. Show tags
for:
FV_ELCAT_STRICT: valid
children for working start to finish
FV_ELCAT_LOOSE: valid children
for working in any order
FV_ELCAT_CHILDREN: children
allowed anywhere in parent
FV_ELCAT_ALL: all elements
FV_ELCAT_CUSTOM: the list of
tags specified by
FP_CustomElementList
FP_FirstElementDef
InDoc†
824
FDK Programmer’s Reference
F_ObjHandleT
ID of first element definition in the
list of element definitions in the
document (FO_ElementDef ID).
Documents
...
The DOCTYPE system identifier for the source XML document.
Type
Meaning
FP_FirstFmtChangeList
InDoc
F_ObjHandleT
ID of the first format change list in
the list of format change lists in the
document (FO_FmtChangeList
ID).
FP_MaxBottomMargin
MetricT
Maximum bottom margin allowed
in the document.
FP_MaxFirstIndent
MetricT
Maximum first indent allowed in
the document.
FP_MaxFontSize
MetricT
Maximum font size allowed in the
document.
FP_MaxLeading
MetricT
Maximum leading allowed in the
document.
FP_MaxLeftIndent
MetricT
Maximum left indent allowed in
the document.
FP_MaxLeftMargin
MetricT
Maximum left margin allowed in
the document.
FP_MaxRightIndent
MetricT
Maximum right indent allowed in
the document.
FP_MaxRightMargin
MetricT
Maximum right margin allowed in
the document.
FP_MaxSpaceAbove
MetricT
Maximum space above paragraph
allowed in the document.
FP_MaxSpaceBelow
MetricT
Maximum space below paragraph
allowed in the document.
FP_MaxSpread
MetricT
Obsolete property, but still
functional. See corresponding
"tracking" property below.
FP_MaxStretch
MetricT
Maximum character stretch (set
width) expressed as a percentave of
normal stretch for the font (metric
–10% to 1000%).
FP_MaxTabPosition
MetricT
Maximum tab position allowed in
the document.
FP_MaxTracking
MetricT
Maximum character tracking
expressed as a percentage of an em.
FP_MaxTopMargin
MetricT
Maximum top margin allowed in
the document.
Property
FDK Programmer’s Reference 825
4
The DOCTYPE system identifier for the source XML document.
Documents
Type
Meaning
FP_MinBottomMargin
MetricT
Minimum bottom margin allowed
in the document.
FP_MinFirstIndent
MetricT
Minimum first indent allowed in
the document.
FP_MinFontSize
MetricT
Minimum font size allowed in the
document.
FP_MinLeading
MetricT
Minimum leading allowed in the
document.
FP_MinLeftIndent
MetricT
Minimum left indent allowed in the
document.
FP_MinLeftMargin
MetricT
Minimum left margin allowed in
the document.
FP_MinRightIndent
MetricT
Minimum right indent allowed in
the document.
FP_MinRightMargin
MetricT
Minimum right margin allowed in
the document.
FP_MinSpaceAbove
MetricT
Minimum space above paragraph
allowed in the document.
FP_MinSpaceBelow
MetricT
Minimum space below paragraph
allowed in the document.
FP_MinSpread
MetricT
Obsolete property, but still
functional. See corresponding
"tracking" property below.
FP_MinStretch
MetricT
Minimum character stretch (set
width) expressed as a percentage of
normal stretch for the font (metric
–10% to 1000%).
FP_MinTabPosition
MetricT
Minimum tab position allowed in
the document.
FP_MinTracking
MetricT
Minimum character tracking
expressed as a percentage of an em.
FP_MinTopMargin
MetricT
Minimum top margin allowed in
the document.
Property
826
FDK Programmer’s Reference
Documents
Property
FP_NewElemAttrDisplay
Type
Meaning
IntT
Specifies attribute display
properties for new elements:
...
The DOCTYPE system identifier for the source XML document.
FV_ATTR_DISP_NONE: don’t
display attributes
FV_ATTR_DISP_REQSPEC:
display required and specified
attributes
FV_ATTR_DISP_ALL: display all
attributes
FP_NewElemAttrEditing
Specifies when the Edit Attributes
dialog box appears for new
elements:
IntT
FV_ATTR_EDIT_NONE
FV_ATTR_EDIT_REQUIRED
FV_ATTR_EDIT_ALWAYS
FP_SeparateInclusions
IntT
True if inclusions are listed
separately in the Element Catalog.
FP_SgmlApplication
StringT
Retained for backward
compatibility. Use
FP_StructuredApplication.
FP_UseInitial
Structure
IntT
True if FrameMaker inserts initial
structure for new elements.
Document table footnote properties
FO_Doc objects have the following properties that specify how table footnotes appear.
Property
FP_TblFnCellPosition
Type
Meaning
IntT
Placement of footnote number in footnote
text:
FV_FN_POS_SUPER: Superscript
FV_FN_POS_BASELINE: Baseline
FV_FN_POS_SUB: Subscript
FP_TblFnCellPrefix
StringT
Prefix to appear before table footnote number
in table cell
FP_TblFnCellSuffix
StringT
Suffix to appear af