c# pdf viewer open source : Reorder pdf pages online software Library cloud windows asp.net winforms class World%20of%20Warcraft%20Programming%20(2nd%20Edition)41-part1840

Chapter 19
Altering Existing Behavior with Function Hooking
369
Create the Function Hook
The new function is simple; it just calls
timerFrame:Show()
and changes the
counter to
0
to reset the timer. It then calls the original
SetZoom
function
to change the zoom level. Add this function definition to the bottom of
MapZoomOut.lua
:
function Minimap.SetZoom(...)
-- Show the timer frame, starting the timer
timerFrame:Show()
counter = 0
-- Call the original SetZoom function
return origSetZoom(...)
end
Thefunctionparametersorreturns aresimplypassedtotheoriginal function
using
...
,and the results are returned to the calling function. This ensures
that the function will operate well with whatever calls it, because it augments
behavior rather than altering the original function.
Writing the Timer Code
The timer is a bit more complex than the earlier example simply for
aesthetic reasons. The easy way to write this addon would be to call
origSetZoom(Minimap, 0)
when the timer expires, but this causes a pretty
large change in the minimap and doesn’t look all that pleasing. Instead, this
function will zoom out step by step, producing a more gradual zoom.
Add the following code to the bottomof
MapZoomOut.lua
:
local function OnUpdate(self, elapsed)
-- Increment the counter variable
counter = counter + elapsed
if counter >= DELAY then
-- Check current zoom level
local z = Minimap:GetZoom()
if z > 0 then
origSetZoom(Minimap, z - 1)
else
-- Enable/Disable the buttons
MinimapZoomIn:Enable()
MinimapZoomOut:Disable()
self:Hide()
end
end
end
Reorder pdf pages online - 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 reverse pages in pdf; reorder pages pdf file
Reorder pdf pages online - 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
pdf reverse page order; move pdf pages in preview
370
Part III
Advanced Addon Techniques
The beginning of the timer is the same, incrementing the counter and
checking it against the delay. Inside the conditional, you store the current
zoom level in local variable
z
so it can be referenced. If the minimap is
currently zoomed in (
z > 0
), the map is zoomed out by one level, but the
counterisn’t reset. That ensures the timer’s payloadwill run on the nextframe
update as well. This alone accomplishes the gradual zoom-out rather than the
single frame change.
Finally, once the minimap is zoomed all the way out, the
MinimapZoomIn
button is enabled, and the
MinimapZoomOut
button is disabled. Then the timer
frame hides itself so its
OnUpdate
won’t be called again.
Final Setup
The last step is setting the
OnUpdate
script for
timerFrame
,and then deciding
what to do when the addon first loads. Because the user may load the game
with the minimap already zoomed in, the code will check to see if it should
start the timeror hide it to begin with (so it doesn’t run).
Add the following code to the bottom of your
MapZoomOut.lua
file:
timerFrame:SetScript(“OnUpdate“, OnUpdate)
if Minimap:GetZoom() == 0 then
timerFrame:Hide()
end
Testing MapZoomOut
Aswithanyaddon youcreate,testthefunctionalitytoensure itworks properly
with no side effects. In this case, test the following:
Using the zoom-in button, zoom in to each level, and verify that the map
is zoomed out after
DELAY
seconds each time.
Manually call the
Minimap:SetZoom()
function by running
/script
Minimap:SetZoom(3)
.The addon should detect the change, and begin
the timer even though the buttons weren’t pushed.
Summary
Function hooking can be a useful tool in a programmer’s box, but it comes
with a hefty instruction booklet andsetof warnings.In particular, followthese
principles when creating function hooks:
Use the same parameters and returns.
Call the original function and maintain the hook chain.
Don’t alter the order or meaning of arguments or returns, because other
functions may rely on them.
C# TIFF: How to Reorder, Rearrange & Sort TIFF Pages Using C# Code
Reorder, Rearrange and Sort TIFF Document Pages in C#.NET Application. C# TIFF Page Sorting Overview. Reorder TIFF Pages in C#.NET Application.
rearrange pages in pdf reader; rearrange pdf pages online
C# PDF: C# Code to Process PDF Document Page Using C#.NET PDF
C# PDF Page Processing: Sort PDF Pages - online C#.NET tutorial page for how to reorder, sort, reorganize or re-arrange PDF document files using C#.NET code.
move pages in pdf acrobat; how to reorder pdf pages in
Chapter 19
Altering Existing Behavior with Function Hooking
371
Don’t dependon your hook being in a certain place in thechain.This also
means you should never unhook a function.
Look for alternatives first.Hooking may not always be the best solution.
In addition, special care must be taken when hooking Blizzard scripts and
functions because certain actions are restricted to the default user interface.
The Code
MapZoomOut
MapZoomOut.toc
## Interface: 30200
## Title: MapZoomOut
## Notes: Zooms the map out to the full level after a given time
MapZoomOut.lua
MapZoomOut.lua
local timerFrame = CreateFrame(“Frame“)
local DELAY = 20
local counter = 0
local origSetZoom = Minimap.SetZoom
function Minimap.SetZoom(...)
-- Show the timer frame, starting the timer
timerFrame:Show()
counter = 0
-- Call the original SetZoom function
return origSetZoom(...)
end
local function OnUpdate(self, elapsed)
-- Increment the counter variable
counter = counter + elapsed
if counter >= DELAY then
-- Check current zoom level
local z = Minimap:GetZoom()
if z > 0 then
origSetZoom(Minimap, z - 1)
else
-- Enable/Disable the buttons
VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
Sort and Reorder PowerPoint Slides Range with VB amount of robust PPT slides/pages editing methods powerful & profession imaging controls, PDF document, image
rearrange pages in pdf document; how to reorder pages in a pdf document
VB.NET PDF: Create PDF Document Viewer in C#.NET for Document
"This online guide content is Support navigating to the previous or next page of the PDF document; Able to insert, delete or reorder PDF document page in VB.NET
reorder pages in pdf online; move pages in pdf
372
Part III
Advanced Addon Techniques
MinimapZoomIn:Enable()
MinimapZoomOut:Disable()
self:Hide()
end
end
end
timerFrame:SetScript(“OnUpdate“, OnUpdate)
if Minimap:GetZoom() == 0 then
timerFrame:Hide()
end
VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
Users can use it to reorder TIFF pages in ''' &ltsummary> ''' Sort TIFF document pages in designed powerful & profession imaging controls, PDF document, image
pdf page order reverse; how to rearrange pdf pages
VB.NET PDF: VB.NET Guide to Process PDF Document in .NET Project
This online guide content It can be used to add or delete PDF document page(s), sort the order of PDF pages, add image to PDF document page and extract page(s
how to rearrange pages in a pdf reader; reverse page order pdf online
CH A P T E R
20
Creating Custom Graphics
When creating addons for World of Warcraft, you can often build yourframes
using only the default Blizzard artwork, icons, and buttons. However, if your
addon requires something more specific, it can be created using any major
graphics editor. This chapter details the major steps needed tocreate a custom
texture for WoW in the GNU Image Manipulation Program (GIMP), Adobe
Photoshop CS, and Corel Paint Shop Pro X.
Common Rules for Creating Graphics
Graphics (or textures) in WoW have a few specific requirements they must
meet for themto be loaded and rendered in-game as part of a custom UI:
The height and width of the texture must be a power of two, although
they do not have to be the same power of two. This means 32x256 and
512x512 are both valid, but 50x128 is not. In addition,textures are limited
to a maximum of 512 pixels in either dimension. If you have a larger
graphic, you can break it into tiles and use multiple Texture objects to
display it.
The graphic must be saved in either BLP or TGA format. BLP is a
proprietary format that Blizzard uses internally, and there are no official
tools that allow these files to be easily created or edited. TGA files can be
read and written in most major graphics editors.
373
C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
Online C# class source codes enable the ability to rotate single NET, add new PDF page, delete certain PDF page, reorder existing PDF pages and split
how to reorder pdf pages in reader; how to move pages in a pdf
VB.NET TIFF: VB.NET Sample Code to Process & Manage TIFF Page
certain TIFF page, and sort & reorder TIFF pages in Process TIFF Pages Independently in VB.NET Code. powerful & profession imaging controls, PDF document, image
how to move pages in pdf acrobat; move pages in a pdf file
374
Part III
Advanced Addon Techniques
Textures should be saved with an 8-bit alpha channel along with the
24-bit color data. This allows for both partial and full transparency in
textures.
Graphics files must reside in an addon’s directory to be accessible to the
game client.
The GIMP
Creating a texture with transparency is relatively simple in the GIMP because
of the way it handles the alpha channel. The trick is creating the image with
atransparent background, and paying particular attention when creating the
various elements of the image.
Create a New Image
To create a new image with the GIMP:
1. Select File
New in the main GIMP window.
2. In the window that appears (see Figure 20-1), enter the width and height
of your image. Keep in mind that you don’t need to fill the entire space,
but both the height and width must be a power of two.
Figure 20-1: GIMP’s New Image dialog
Chapter 20
Creating Custom Graphics 375
3. Expand the Advanced Options section of the New dialog.
4. Ensure RGB color is selected for the Colorspace.
5. SetFill With to Transparency, so the new base image is fully transparent.
6. Click OK.
Adding Graphical Components
Anew window opens showing the base transparent image (see Figure 20-2).
You can add any graphical components to this image, including layers.
Unfortunately, I’m just a simple programmer and lack any and all graphical
manipulation skills,soIcan’tgiveyoutoomanypointers.Thisexamplecreates
avery simple custombutton.
Figure 20-2: Editing window for new transparent image in the GIMP
Figure 20-3 shows a newly created custom icon, combining a simple border
graphic anda pictureofmy dogDaisy.This imageis 64x64and hastransparent
edges (specifically for the rounded corners).
Figure 20-3: New custom icon created in the GIMP
376
Part III
Advanced Addon Techniques
Saving Textures
As long as the graphic was createdwith a transparentbackground,you should
be able to save it without any issues. Save the new image using the following
steps:
1. Mergeall thelayers before attempting to save becauseTGA does notsup-
port layers.This stepisn’t necessarily requiredbut makes the subsequent
steps easier.
2. Select File
Save.
3. In the Save dialog, name your file with a
.TGA
extension and click the
Save button.
4. An options dialogpops up(shownin Figure 20-4).Checkbothcheckboxes
and click OK. This compresses the image in a lossless way (so it loses no
quality) but creates a smaller file size.
Figure 20-4: Save as TGA dialog in the GIMP
Personally, I find that creating images in the GIMP the easiest, because the
onlytrickisensuringtheimageistherightsizewith atransparentbackground.
Adobe Photoshop
Creating a texture in Photoshop is similar to creating one in the GIMP, but the
interface is quitea bit different.The same basic steps apply,the image creation
and saving being the most important.
Create a New Image
To create a new image with Photoshop:
1. Open Photoshop and select File
New.
2. The New dialog opens (see Figure 20-5).
3. Change the height and width to your desired dimensions.
4. Ensure the Background Contents dropdown has Transparent selected.
5. Click OK to create the new image.
Chapter 20
Creating Custom Graphics 377
Figure 20-5: Adobe Photoshop file creation dialog
Adding Graphical Components
Create the graphic as required (you’re the one familiar with Photoshop here),
but take care to follow these rules:
Make sure there isn’t a Background layer in your document when you
are ready to save.
If you need to merge visible layers, use Merge All, but don’t flatten
the image. Flattening the image gives it a background, which loses the
transparency information.
Transparency in Adobe Photoshop is different than in GIMP. In particular,
you won’t see an alpha channel created by default in the Channels window.
The transparent background means nothing when the image is flattened and
saved. To achieve transparency,you must create the alpha channel.
Creating an Alpha Channel
When your image is complete and ready to save, run the following steps to
create an alpha channel:
1. Merge the visible layers so you have a single layer containing the
nontransparent portions of your image.
2. Select the layer in the layers palette.
3. Open the Select menu and select Load Selection.
4. Youwill be promptedwith a dialog box (see Figure 20-6), but the default
options should be correct. Click OK. This selects each pixel in the current
layer that isn’t transparent.
378
Part III
Advanced Addon Techniques
Figure 20-6: Load Selection dialog
5. In the Channels window, there is a small icon that will ‘‘Save Selection
As Channel’’ (see Figure 20-7). Click it, creating an alpha channel based
on the selection.
Figure 20-7: Save Selection As Channel button in the Channels window
Thenew8-bitalpha channelgivesyoudifferentlevelsofopacityforanimage
with more forgiving transparency. Now that the transparency information is
stored in a channel, you can flatten the image if you’d like (although there
is no compelling reason to do so).
Saving an Image
Once the alpha channel is created, saving the image is a matter of selecting
File
Save As. The Save As dialog provides several options (shown in
Figure 20-8).
Documents you may be interested
Documents you may be interested