c# itextsharp pdf page to image : Annotate protected pdf application software tool html windows wpf online FBeginner6-part1253

myBytesetto2and4
myByte:6Binary:110
Testingfor2
myBytecontains2
Testingfor4
myBytecontains4
Testingfor8
myBytedoesn'tcontain8
Output 6.2: Output of or.bas
As you can see from the output, you can pack multiple values into a single 
variable. The number of values a variable can contain depends on the size of data type 
and the range of values. Using the OR and AND combination is a technique that you will 
find in wide-spread use, especially in third-party libraries, as it provides an efficient way 
to pass multiple data items using a single variable.
The XOR Operator
One of the more useful aspects of the XOR operator is to flip bits between two 
states. XORing a value with 0 will return the original value, and XORing with a 1 returns 
the opposite value. Suppose that you start with a 1 bit and XOR with a 0 bit. Since the 
two inputs are different you will get a 1. If the start value is 0 and you XOR with a 0, then 
both values are the same and you will get a 0. In both cases the output is the same as 
the input. If you start with a 1 and XOR with a 1, you will get a 0 since both inputs are the 
same. If you start with a 0 and XOR with a 1, you will get a 1 since the inputs are 
different. Here the inputs have been flipped to the opposite values. You can use this 
technique with a mask value, XORing once to get a new value, and then XORing again 
with the same mask to get the original value.
One use of this technique is to display a sprite on the screen using XOR and then 
erasing the sprite by using another XOR at the same location. The first XOR combines the 
bits of the background with the sprite bits to display the image. Another XOR in the same 
location flips the bits back to their original state, once again showing the background and 
effectively erasing the sprite image.
XOR can also be used to swap the values of two variables as demonstrated in the 
following program.
1
2
3
4
5
6
OptionExplicit
DimAsIntegermyInt1=5,myInt2=10
Print"myInt1=";myInt1;"myInt2=";myInt2
Print"Swappingvalues..."
61
Annotate protected pdf - C# PDF Password Library: add, remove, edit PDF file password in C#.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
convert password protected pdf to normal pdf; password on pdf
Annotate protected pdf - VB.NET PDF Password Library: add, remove, edit PDF file password in vb.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
convert protected pdf to word online; password pdf
7
8
9
10
11
12
13
myInt1=myInt1XormyInt2
myInt2=myInt1XormyInt2
myInt1=myInt1XormyInt2
Print"myInt1=";myInt1;"myInt2=";myInt2
Sleep
End
Listing 6.5: xor.bas
Analysis:
In line 3 the working variables are declared and initialized. Line 5 prints 
out the initial variable values. Lines 7 through 9 carry out the XOR operation. In line 7, 
MyInt1 is XORed with myInt2 to get an intermediate value which is stored in myInt1. In 
line 8, the XOR operation returns the original value of myInt1 which is stored in myInt2. 
The third XOR operation in line 9 then returns the value of myInt2 from the intermediate 
value that was stored in myInt1 in line 7. Line 10 prints out the swapped values and the 
program is then closed in the usual way.
Running the program produces the following output.
myInt1=5myInt2=10
Swappingvalues...
myInt1=10myInt2=5
Output 6.3: Output of xor.bas
As you can see the program was able to swap the two values without using a 
temporary variable because the XOR operator is able to flip the bits between two distinct 
states. 
The EQV Operator
The EQV operator isn't used much as a bitwise operator, but it can be used to see 
if two expressions are equivalent as the following program demonstrates.
1
2
3
4
5
6
7
8
9
10
11
OptionExplicit
#defineFalse0
#defineTrueNOTFalse
DimAsIntegermyInt1=4,myInt2=2
Print"myInt1=";myInt1;"myInt2=";myInt2
Print
'Bothstatementsaretruesoareequivalent.
62
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
Support for customizing image size. Password protected PDF document can be converted and changed. Open source codes can be added to C# class.
add password to pdf document; create password protected pdf reader
VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
PDF in C#, C#.NET PDF Reading, C#.NET Annotate PDF in WPF, C#.NET PDF Create, C#.NET PDF Document Viewer, C#.NET Able to convert password protected PDF document.
add password to pdf reader; break pdf password online
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
26
37
38
39
Print"Statement(myInt1<5)eqv(myInt2>1)";
If(myInt1<5)Eqv(myInt2>1)=TrueThen
Print"isequivalent."
Else
Print"isnotequivalent."
EndIf
Print
'Bothstatementsarefalsesoareequivalent.
Print"Statement(myInt1>5)eqv(myInt2<1)";
If(myInt1>5)Eqv(myInt2<1)=TrueThen
Print"isequivalent."
Else
Print"isnotequivalent."
EndIf
Print
'Oneistrue,theotherfalsesostatement
'isnotequivalent.
Print"Statement(myInt1>5)eqv(myInt2<1)";
If(myInt1>3)Eqv(myInt2<1)=TrueThen
Print"isequivalent."
Else
Print"isnotequivalent."
EndIf
Sleep
End
Listing 6.6: eqv.bas
Analysis:
In lines 3 and 4, the values False and True are defined. FreeBasic uses -1 
to indicate a True result from a logical operation such as that performed when executing 
an If statement. Since False is defined as 0, NOT False flips all the bits to 1, including the 
sign bit, making -1. 
In line 6 the working variables are declared and initialized. Lines 12 through 18 test 
the first expression. The If statement in line 13 will execute the first expression, (myInt1 
< 5). Since 4 < 5 this will return True. The EQV operator has lower precedence then 
(myInt2 > 1), so this will be evaluated, and since 2 > 1 then will also return true. This 
leaves -1 EQV -1 to be evaluated. Since -1 is equivalent to -1, the whole statement is 
True. In line 22, both of the expressions are False. 0 EQV 0 is True, so this statement is 
also True and will print out the affirmative. In line 32, the first expression is True while the 
second is False. Since -1 is not equivalent to 0, this statement will evaluate to False and 
the negative will be printed.
When the program is run, you will see the following output.
63
VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
Create editable Word file online without email. Supports transfer from password protected PDF. VB.NET class source code for .NET framework.
adding a password to a pdf using reader; pdf security password
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
Password protected PDF file can be printed to Word for mail merge. C# source code is available for copying and using in .NET Class.
pdf password recovery; pdf password reset
myInt1=4myInt2=2
Statement(myInt1<5)eqv(myInt2>1)isequivalent.
Statement(myInt1>5)eqv(myInt2<1)isequivalent.
Statement(myInt1>5)eqv(myInt2<1)isnotequivalent.
Listing 6.7: Output of eqv.bas
It is important to realize that you are not testing to see if the expressions are True 
or False. You are only testing to see if the expressions are equivalent to each other. To put 
it another way, you are testing to see if two assertions are equivalent to each other. For 
example, suppose you have two characters in a game and you want to attack with both 
characters, if they are at equivalent strength. You could build an expression similar to the 
one in the listing and take action based on the equivalence of the two characters.
The IMP Operator
Like the EQV operator, IMP is rarely used as a bitwise operator. It is used in logic 
programming to test whether assertion A implies assertion B. Looking at the truth table 
we can see that a True assertion implies a True conclusion so True and True is also True. A 
True assertion however cannot imply a False conclusion so True and False is False. A False 
premise can imply any conclusion so False with any conclusion is always True. Unless you 
are building an expert system or natural language interface, you will probably never need 
to use this operator.
Caution Exercise caution when using bitwise operators with arithmetic operators, 
as the result may not be what you expect. When used in logical expressions, such as in 
an If statement, make sure the bitwise operators operate on either the True or False 
values of complete expressions to avoid evaluation problems. 
Shortcut Bitwise Operators
The bitwise operators, like the arithmetic operators, can be written in shorthand 
form. The following table lists the shortcut versions of the bitwise operators.
Operator
Syntax
Comment
And=
B And= C
This is the same as B = B 
And C.
Or=
B Or= C
This is the same as B = B Or 
C.
Xor=
B Xor= C
This is the same as B = B 
Xor C.
Eqv=
B Eqv = C
This is the same as B = B 
Eqv C.
64
C# PDF: C#.NET PDF Document Merging & Splitting Control SDK
Can I use RasterEdge C#.NET PDF document merging & splitting toolkit SDK to split password-protected PDF document using Visual C# code?
convert password protected pdf to excel; add password to pdf preview
.NET PDF SDK - Description of All PDF Processing Control Feastures
PDF Document Protect. PDF Password. Able to Open password protected PDF; Allow users to add password to PDF; Allow users to remove password from PDF;
convert protected pdf to word document; create password protected pdf online
Operator
Syntax
Comment
Imp=
B Imp= C
This is the same as B = B 
Imp C.
Table 6.2: Shortcut Bitwise Operators
The SHL and SHR Operators
SHL stands for shift left and SHR stands for shift right. As the names imply, these 
operators shift the bits of a byte or integer-type variable either left or right. The following 
table shows the syntax diagram of both operators.
Operator
Syntax
Comments
SHL (Shift bits left)
B = variable SHL 
number
Shifts the bits of variable left number of 
places.
SHR (Shift bits right)
B = variable SHR 
number
Shifts the bits of variable right number of 
places.
Table 6.3: SHL and SHR Operators
Shifting left is the same as multiplying by 2 and shifting right is the same as 
dividing by 2. You can see this by looking at the binary representation of a number. Take 
the byte value of 1 which is 0000 0001. The 1 is in the 2
0
position. 2
0
equals 1. Shifting 
the bit left, makes 0000 0010, putting the 1 bit in the 2
1
position, which evaluates to 2. 
This is the same as 1*2. Shifting left again puts the bit at the 2
2
position, 0000 0100 
which evaluates to 4, or 2 *2. Shifting the bit right puts the 1 back in the 2
1
position, 
0000 0010, which evaluates to 2, or 4/2. Shifting right again puts the 1 bit in the 2
position, 0000 0001, which is 1 or 2/2.
The shift operation can be used as a replacement for multiplication or division if 
you are working with powers of 2, but it is primarily used to pack data items into 
variables, or to retrieve data items from variables. You saw this demonstrated in the 
MAKDWORD macro which was defined as 
#defineMAKDWORD(x,y)(cint(x)shl16or
cint(y))
In this macro, the value of x is converted to an integer, and then shifted left 16 bits 
into the high word. An integer is 4 bytes and can be represented as 00000000  00000000 
00000000 00000001 . Shifting 16 bits left makes  00000000  00000001 00000000 
00000000. Remember that a word is two bytes, so the 1 has been shifted to the high 
word of the integer. You can then use the Hiword function to retrieve this value.
The following program shows the SHL and SHR operators.
1
2
3
4
5
6
OptionExplicit
DimAsUintegermyInt=1,i
'Multiplybypowersof2
Print"Shiftingleft..."
65
C# PDF: C# Code to Create Mobile PDF Viewer; C#.NET Mobile PDF
also allows developers to annotate, process and float DocWidth = 819; protected void Page_Load Demo_Docs/").Replace("\\" Sample.pdf"; this.SessionId
break password on pdf; convert password protected pdf to word
C# Image: How to Integrate Web Document and Image Viewer
developers to view, edit, annotate and process RasterEdgeImagingDeveloperGuide8.0. pdf: from this user manual mode; public string fid; protected void Page_Load
add password to pdf; add password to pdf file with reader
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Print"myInt=";myInt
Fori=1To8
myInt=myIntShl1
Print"myInt=";myInt
Next
Print
'Dividebypowersof2
Print"Shiftingright..."
Print"myInt=";myInt
Fori=1To8
myInt=myIntShr1
Print"myInt=";myInt
Next
Sleep
End
Listing 6.8: shlr.bas
Analysis:
Line declares the working variables, myInt which will be he value that is 
shifted, and i for use in the For-Next loop. Line 8 through 11 shift myInt left 16 times, 1 bit 
position each time, and prints the result. Line 15 through 19 then shift the variable right 
16 times and prints the result. The program is closed in the usual way.
Running the program produces the following output.
Shiftingleft...
myInt=1
myInt=2
myInt=4
myInt=8
myInt=16
myInt=32
myInt=64
myInt=128
myInt=256
Shiftingright...
myInt=256
myInt=128
myInt=64
myInt=32
66
myInt=16
myInt=8
myInt=4
myInt=2
myInt=1
Output 6.4: Output of shlr.bas
As you can see from the output, shifting left multiplies the value by 2 and shifting 
right divides the value by 2. 
Bitwise Macros
FreeBasic has several built-in macros for retrieving and setting bit and byte data 
from a variable. The following tables lists the macros, the syntax and their definitions.
Macro
Syntax
Definition
Hiword
B = Hiword(variable)
#define Hiword(x) (CUInt(x) shr 16)
Loword
B = Loword(variable)
#define Loword(x) (CUInt(x) and 65535)
Hibyte
B = Hibyte(variable)
#define Hibyte(x) ((CUint(x) and 65280) 
shr 8)
Lobyte
B = Lobyte(variable)
#define Lobyte( x ) ( CUint( x ) and 255 )
Bit
B = Bit( variable, bit_number 
)
#define Bit( x, bit_number ) (((x) and (1 
shl (bit_number))) > 0)
Bitset
B = Bitset(variable, 
bit_number)
#define Bitset( x, bit_number ) ((x) or (1 
shl (bit_number)))
Bitreset
B = Bitreset(variable, 
bit_number)
#define Bitreset( x, bit_number ) ((x) and 
not (1 shl (bit_number)))
Table 6.4: Bitwise Macros
The Hiword macro returns the leftmost two bytes of an integer and the Loword 
macro returns the the rightmost two bytes. The Hibyte macro returns the leftmost eight 
bits of a an integer and the Lobyte returns the rightmost eight bits.
The Bit macro returns a -1 if a bit at position bit_number is a 1, otherwise it returns 
a 0. The Bitset macro sets the bit at position bit_number to 1 and returns the number, 
and the Bitreset macro sets the bit at position bit_number to 0 and returns the number. 
The rightmost bit is bit 0 following the binary numbering scheme.
Caution Bitwise operators will only work correctly on byte and integer-type data. A 
single or double-type variable that is passed to a bitwise operator will be implicitly 
converted to an integer,  which may result in precision loss.
67
These macros are useful when working with third party libraries such as the 
Windows API, where several pieces of information are stored in a single data type. 
A Look Ahead
In addition to the arithmetic and bitwise operators, FreeBasic has a set of 
mathematical functions which is the subject of the next chapter.
68
7
Mathematical Functions
FreeBasic has a number of mathematical functions which are listed in the following 
table.
Function
Syntax
Comments
ABS (Absolute Value)
B = Abs(expression) Returns the unsigned value of expression. 
This is an overloaded function so 
expression can resolve to an integer, 
longint or double.
ACOS (ArcCosine)
B = 
Acos(expression)
Returns the ArcCosine of a double-type 
expression in radians. Expression must be 
in the range of -1 to 1.
ASIN (ArcSine)
B = Asin(expression) Returns the ArcSine of a double-type 
expression in radians. Expression must be 
in the range of -1 to 1.
ATAN2 (ArcTangent of 
Ratio)
B = 
Atan2(expressionV, 
expressionH)
Returns the ArcTangent of of ratio of 
double-type expression1 / expression2 in 
radians. ExpressionV is the vertical 
component and expressionH is the 
horizontal component, where both 
expressions are double-type values.
ATAN (ArcTangent)
B = 
Atan(expression)
Returns the ArcTangent of a double-type 
expression in radians. Expression must be 
in the range of -Pi/2 to Pi/2.
COS (Cosine)
B = Cos(expression) Returns the Cosine of a double-type 
expression in radians. Expression must be 
in the range of -1 to 1 and is the angle 
measured in radians.
EXP (E Exponent)
B = Exp(expression) Returns e (approx 2.716) raised to the 
power of a double-type expression.
LOG (Logarithm)
B = Log(expression) Returns the natural Logarithm (base e) of 
a double-type expression. 
SGN (Sign)
B = Sgn(expression) Returns the sign of a double-type 
expression. If expression is greater than 0 
then Sgn returns a 1. If expression is 0, 
then Sgn returns 0. If expression is less 
than 0, then Sgn return -1.
SIN (Sine)
B = Sin(expression) Returns the Sine of a double-type 
expression in radians. Expression must be 
in the range -1 to 1.
SQR (Square Root)
B = Sqr(expression) Returns the square root of a double-type 
69
Function
Syntax
Comments
expression. Expression must be greater 
than or equal to 0.
TAN (Tangent)
B = Tan(expression) Returns the Tangent of a double-type 
expression in radians. Expression is the 
angle measured in radians.
Table 7.1: Mathematical Functions
Trigonometric Functions
All of the trigonometric functions return the measured angle in radians not 
degrees. To convert degrees to radians you would use the formula radian = degree * PI / 
180. To convert radians to degrees you would use the formula degree = radian * 180 / PI. 
PI is the ratio of the circumference of a circle to its diameter and can be calculated using 
the Atn function with the formula PI = 4 * Atn(1.0). The following short program converts 
an angle in degrees to an angle in radians.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
OptionExplicit
'CalcthevalueofPi
ConstPi=4*Atn(1)
DimAsDoubledeg,rad
'Gettheangleindegrees
Input"Enteranangleindegrees";deg
'Calculatetheradian
rad=deg*Pi/180
'Printoutthevalues
Print
Print"Pi:";Pi
Print"Degrees:";deg
Print"Radians:";rad
Sleep
End
Listing 7.1: degrad.bas
Analysis:
In line 4 a symbolic constant is declared for PI using the Atn function. Line 
 declares the working variables. In line 9, the user inputs the degrees to convert to 
radians. Line 12 calculates the radian angle based on the conversion formula listed 
above. Lines 15 through 18 print out the various values. The program is then ended in 
the usual way.
70
Documents you may be interested
Documents you may be interested