c# pdf viewer open source : Reorder pages in pdf preview Library SDK component .net asp.net html mvc World%20of%20Warcraft%20Programming%20(2nd%20Edition)2-part1816

Contents
xix
Giving Objects Sizes
146
Absolute Dimensions
146
Relative Dimensions
146
Anchoring Objects
147
Sticky Anchors
148
SetAllPoints
148
Anchor Examples
148
Using Lua to Create Frames
149
Adding Layers of Textures and Font Strings
150
Layering Framesand Graphics
150
Frame Strata
150
Frame Levels
151
Graphical Layers
152
BagBuddy Frame Design
153
Finding Graphics
155
TexBrowser AddOn
155
ArtBrowser on Wowprogramming.com
155
Adding Textures
155
Defining BagBuddy’s Background Textures
157
Coloring Textures
158
Using Solid Colors
158
Creating a Gradient
159
Adding the Portrait Texture
160
Creating TexturesinLua
162
Creating Text using FontStrings
164
Further Customization
165
Using Font Definitions
165
Creating FontStringsinLua
166
UnderstandingObjectVisibility
166
FindingExisting Frames
167
Summary
167
The Code
168
Chapter 10 Saving Time with Frame Templates
171
Understanding Templates
171
Advantagesof Using Templates
173
Naming Elements Using $parent
173
Setting Keys Using the parentKey Attribute
174
Creatinga Template forBagBuddy’s Item Buttons
174
Setting Button Textures
175
Creating New Frames with Your Template
176
Exploring Font Definitions
177
Altering aFont Definition
178
Reorder pages in pdf preview - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
how to rearrange pages in pdf document; how to move pages around in pdf
Reorder pages in pdf preview - VB.NET PDF Page Move Library: re-order PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sort PDF Document Pages Using VB.NET Demo Code
reorder pages of pdf; how to reorder pages in pdf
xx
Contents
InvestigatingUIPanelTemplates
179
UIPanelButtonTemplate
180
UIPanelCloseButton
180
UIPanelScrollBarTemplate
181
InputBoxTemplate
181
UICheckButtonTemplate
182
TabButtonTemplate
183
UIRadioButtonTemplate
183
Summary
183
TheCode
184
Chapter 11 Exploring the World of Warcraft API
187
Understandingthe WoWAPI
187
NormalAPIs
188
Library-like APIs
188
FrameXML Functions
189
Protected Functions
189
Unit Functions UpClose
190
Querying Item Information for BagBuddy
193
Scanning Bags withthe Container API
193
Querying Detailed Item Information
194
Item Identifiers
195
Using the Item API
197
Writing a BagScanner
198
Sorting the Player’s Inventory
199
Displaying the Inventory
199
Testing the Update Function
200
Finding the Right API Functions
201
Exploring the API Categories
201
Examining the FrameXML Code
202
Looking at Another Addon
203
Asking for Help!
203
Summary
203
TheCode
204
Chapter 12 Interacting with Widgets
207
Making BagBuddy’s Buttons Interactive
207
Setting Frame Scripts via XML
208
Using the function Attribute
209
Setting Frame Scripts Using Lua
209
Showing Item TooltipsUsing OnEnter and OnLeave
210
Adding Clickable Buttons toBagBuddy
212
Introducing the OnClick Handler
212
C# Word: How to Create Word Document Viewer in C#.NET Imaging
thumbnail preview for accurate Word page navigation and location in C#.NET; Offer mature Word file page manipulation functions (add, delete & reorder pages) in
reorder pages in a pdf; how to reorder pdf pages
VB.NET Image: Web Image and Document Viewer Creation & Design
can rotate, redact & annotate images and add, delete & reorder document pages with zero It is a powerful toolkit to print bitonal images, PDF, and so
reordering pages in pdf document; reverse page order pdf online
Contents
xxi
Creating aClose ButtonUsing Templates
213
Creating Clickable Filter Buttons
214
Creating the Filter ButtonsDynamically
216
Adding Custom Tooltips
217
Making the Filter Buttons Clickable
217
Updating the Results
218
Navigating Multiple Pages
219
Adding XML Definitions for Buttonsand Status Text
220
Writing OnClick Handlers for NavigationButtons
221
Altering the Update Function for Pages
221
Enabling and Disabling Navigation Buttons
222
Creating and Updating Status Text
223
Final Changesto Support Navigation
224
Adding a Name FiltertoBagBuddy
224
Creating anEditBox
225
Filtering by Name
226
Exploring WidgetTypes
227
Button
227
CheckButton
228
ColorSelect
228
EditBox
229
GameTooltip
229
MessageFrame
229
Minimap
229
Model
230
ScrollingMessageFrame
231
ScrollFrame
231
SimpleHTML
231
Slider
232
StatusBar
232
Summary
233
The Code
233
Chapter 13 Responding to Game Events
243
Understanding Events
243
Registering for Events
244
Responding to EventswithOnEvent
244
Query Events
246
Tracking Changes to Inventory forBagBuddy
246
Examining the BAG_UPDATE Event
246
Tracking New Inventory Items
246
Writing aNew Sorting Function
248
Altering BagBuddy_Update
248
xxii Contents
Adding an OnEvent Handler
249
Cleaning Up
250
Adding a SlashCommand
251
Storing Data with SavedVariables
251
Registering aNewSaved Variable
252
Saved Variablesand ADDON_LOADED
252
Using Items from BagBuddy
253
Finding the Right Event Using /eventtrace
254
Summary
255
TheCode
255
Chapter 14 Tracking Damage with CombatTracker
267
DefiningSpecifications
267
CombatTracker User Experience
267
Finding the Right Game Events
268
PLAYER_REGEN_DISABLED
268
PLAYER_REGEN_ENABLED
268
UNIT_COMBAT
269
Creating the Addon’s Skeleton
269
DefiningCombatTracker’s XML Frame
270
Defining aBackdrop
271
Adding a Font String
272
Testing CombatTrackerFrame
272
Adding ScriptHandlers toCombatTrackerFrame
273
Adding Functions to CombatTracker.lua
275
CombatTracker_OnLoad(frame)
275
CombatTracker_OnEvent
276
PLAYER_REGEN_ENABLED
276
PLAYER_REGEN_DISABLED
277
UNIT_COMBAT
277
CombatTracker_UpdateText()
277
CombatTracker_ReportDPS()
278
Testing CombatTracker
278
Frame Dragging
279
Right-Click Reporting: Part I
279
Testing Combat Tracking
280
Right-Click Reporting: Part II
280
Summary
281
Part III
Advanced Addon Techniques
283
Chapter 15 Taking Action with Secure Templates
285
Why Are Secure Templates Necessary?
285
Protected Frames
286
Controlling Secure Frames Using Attributes
288
Contents xxiii
UsingSecureTemplates
288
Defining Behaviorsfor ActionButtons
289
Casting aSpell
289
Looking Under the Hood
290
Specifying Unitsto Affect
291
Other Typesand Their Uses
291
Making Simple Choices
296
Working withModified Attributes
296
Delegating Attribute Responsibility
298
Choosing anAction by Hostility
298
Applying Action Buttons in Practice
299
Modifying anExisting Frame
299
AComplex ActionButton
300
Understanding Taint and Working Safely Around Secure
Code
302
Enabling Taint Logging
303
Execution Taint
304
Variable Taint
305
Creeping Taint
307
Summary
308
Chapter 16 Binding Keys and Clicks to Addon Code
309
Defining Bindings in XML
310
CreatingYour Own Binding Actions
312
Binding Keys toActions
314
Building aSimple Binding UI
315
Defining Basic Behaviors
318
Using SetBinding()
321
Workingwith Existing Bindings
324
Displaying anAction’s Bindings
325
Understanding Binding Storage
326
Binding Keys toSecure Actions
327
Working with Click Bindings
328
Creating Secure Bindings in XML
329
Summary
329
The Code
330
BindingTest
330
ClickBindingTest
334
Chapter 17 Creating Slash Commands
337
CreatingBasic Slash Commands
337
Tokenizing Strings
339
Tokenizing with Patterns
341
Setting Up the Patterns
341
xxiv Contents
Preparing for the Tokenization
342
Parsing the Formula
343
Using a Command Table
345
Summary
347
TheCode
347
SlashCalc
347
Chapter 18 Responding to Graphic Updates with OnUpdate
351
UnderstandingGraphic Updates
351
Delaying Code UsingOnUpdate
352
Grouping Events to Avoid Over-Processing
354
Grouping Multiple Events
355
Repeating Code with OnUpdate
356
Considering Performance with OnUpdateScripts
357
Summary
357
Chapter 19 Altering Existing Behavior with Function Hooking
359
What Is Function Hooking?
359
Modifying Return Values
360
Using aVariable Argument Function
361
Using Utility Functionscapture() and release()
361
Hooking Widget Scripts
362
Hooking a FunctionSecurely
364
Hooking ScriptsSecurely
365
Deciding When to Hook
365
Understanding the Hook Chain
365
You Can’t Rely on Order
366
There Is No ‘‘Unhook’’
366
Hooking Hits Performance
366
Finding Alternatives
367
Designingan Addon:MapZoomOut
367
Creating a Timer Frame
368
Initial Setup
368
Create the Function Hook
369
Writing the Timer Code
369
Final Setup
370
Testing MapZoomOut
370
Summary
370
TheCode
371
MapZoomOut
371
Chapter 20 Creating Custom Graphics
373
Common Rules for Creating Graphics
373
TheGIMP
374
Contents
xxv
Create aNewImage
374
Adding Graphical Components
375
Saving Textures
376
Adobe Photoshop
376
Create aNewImage
376
Adding Graphical Components
377
Creating anAlphaChannel
377
Saving an Image
378
Paint Shop Pro
379
Creating aNewImage
380
Adding Graphical Components
380
Creating anAlphaChannel
381
Saving an Image
382
Testing Your Texture
383
No Button Appears
384
AGreenBoxAppears
384
XML Texture Definition
384
Lua Texture Definition
385
Summary
385
Chapter 21 Responding to the Combat Log and Threat Information
387
Understanding theCombatLog
387
Event Arguments
387
Combat Sub-Events
388
Combat Event Prefix
389
Bit Fieldsand SpellSchools
389
Combat Event Suffix
390
Spell-Only Suffixes
393
SpecialCombat Events
395
Unit GUIDs
396
Format of GUIDs
397
Unit Flags
398
COMBATLOG_OBJECT_TYPE_MASK
398
COMBATLOG_OBJECT_CONTROL_MASK
398
COMBATLOG_OBJECT_REACTION_MASK
399
COMBATLOG_OBJECT_AFFILIATION_MASK
399
COMBATLOG_OBJECT_SPECIAL_MASK
399
Using CombatLog_Object_IsA
400
Writing CombatStatus
401
Creatingthe Basic Addon Structure
401
Initializing CombatStatus
402
Updating Pet Mappings
405
Storing Damage and Healing Information
405
Taking ‘‘Snapshots’’of Damage and Healing
407
xxvi Contents
Writing anOnUpdate Function
408
Responding to Events
408
COMBAT_LOG_EVENT_UNFILTERED
409
PARTY_MEMBERS_CHANGED
409
UNIT_PET
409
PLAYER_REGEN_DISABLED
409
PLAYER_REGEN_ENABLED
410
Creating the Frame Display
410
Updating the Frame Display
410
Future Additions
412
Summary
412
Chapter 22 Creating Scroll Frames
413
Using Scroll Frames
414
Adding a Scroll Child
415
Manipulating a ScrollFrame
416
Adding Scroll Bars
417
Creating Faux Scroll Frames
419
Adding Scroll Bars
422
Scrolling withthe Mouse Wheel
423
Problems withSlider Precision
423
Summary
424
TheCode
424
ScrollFrameTest
424
MacroIconTest
426
Chapter 23 Creating Dropdown Menus
431
Creating a Basic Dropdown
431
Adding a Toggle Button
432
Creating a Dropdown Frame
433
Initializing the Dropdown
433
Adding Buttonsto the Dropdown
433
Calling UIDropDownMenu_Initialize()
434
Toggling the Dropdown Menu
434
Testing the Dropdown
435
Creating Multilevel Dropdowns
436
Adding FunctionalitytoDropdowns
437
Customizing Text Elements
438
FunctionMenu Items
440
CheckButton Menu Items
440
ColorPicker Menu Items
441
Using Dropdowns forSelection
443
Automating Menu Creation with EasyMenu
445
Creating Dynamic Menus
447
Summary
449
Contents xxvii
Chapter 24 Scanning and Constructing Tooltips
451
Understanding theTooltip System
451
Different Typesof Tooltips
452
Contextual Tooltips
452
Static Tooltips
453
Tooltip Contents
453
Custom Text in aTooltip
453
Game Element Tooltips
455
Adding Information to the Tooltip
458
Loading the Tooltip with Item Information
458
GettingInformationfrom Tooltips
460
Accessing Individual Tooltip Lines
460
Checking Soulbound Status
461
Using Global Strings for Localization
461
Replacing aScript Instead of Hooking aScript
461
Summary
462
Chapter 25 Taking Protected Action in Combat
463
Snippets: The Basis ofSecureAction
463
How Can AddonCode Be Secure?
463
Writing aSnippet
464
SecureHandler Frames
464
Handler Template Reference
466
Integrating a Click Handler witha Secure ActionButton
468
Preserving State and Controlling Information
473
Private GlobalEnvironments
474
Secure API Functions
475
The control Object
476
Frame Handles
477
AllowedActions
479
Additional or Changed Actions
479
WrappingFrameScripts
482
ASimple Click Wrapper
483
Using a Post-Hook
484
Script Wrapper Reference
485
Triggered Changes
486
State Drivers
486
State Responders
487
Responding to Show/Hide
487
Responding to Attribute and State Changes
488
State Conditionals
490
Target Specifiers andUnit Conditions
491
State Variables
492
Unit Conditions
492
General Conditions
493
xxviii Contents
Summary
496
TheCode
496
BlessedMenus
496
Chapter 26 Creating Unit Frames with Group Templates
501
Configuringa SecureGroupHeader
501
Configuration Options
502
Initial Configuration Function
505
Creating SquareUnitFrames
506
Constructing the Template
506
Creating a Header Template
508
Setting Name andStatus Bars
509
Nudging Frame Levels
511
Responding to Events and Clicks
511
Targeting the Unit onLeft-Click
511
Moving the Header
512
Health Update Events
513
Power Update Events
514
Responding to Name Changes
516
Enhancing SquareUnitFrames
516
Highlighting Units onMouseover
516
Showing the Targeted Unit
517
Displaying Threat Levels
518
Showing Dead Players
519
Displaying Unit Names
521
Adding Pets toSquareUnitFrames
523
Creating a SecureGroupPetHeaderTemplate
526
Summary
526
TheCode
526
SquareUnitFrames
526
Part IV
Reference
537
Chapter 27 API Reference
539
API Reference Conventions
539
Function Signatures
539
OptionalArguments
540
Argument Choices
540
Argument andReturnListings
540
CommonAPIFlags
541
API Meta-Types
542
1nil
542
actionID
542
ah-list-type
543
Documents you may be interested
Documents you may be interested