Theoretical Paper
- Computer Organization
- Data Structure
- Digital Electronics
- Object Oriented Programming
- Discrete Mathematics
- Graph Theory
- Operating Systems
- Software Engineering
- Computer Graphics
- Database Management System
- Operation Research
- Computer Networking
- Image Processing
- Internet Technologies
- Micro Processor
- E-Commerce & ERP
Practical Paper
Industrial Training
Building Mouse Cursors
main( )
{
int gd = DETECT, gm, button, x, y, area, i, choice ;
char *p ;
initgraph ( &gd, &gm, "c:\\tc\\bgi" ) ;
if ( initmouse( ) == 0 )
{
closegraph( ) ;
puts ( "Mouse not installed!" ) ;
exit ( 1 ) ;
}
for ( i = 0 ; i <4 ; i++ )
{
changecursor ( c[i] ) ;
showmouseptr( ) ;
getmousepos ( &button, &x, &y ) ;
area = imagesize ( x - 15, y - 7, x + 32, y + 24 ) ;
p = malloc ( area ) ;
if ( p == NULL )
exit( ) ;
getimage ( x - 15, y - 7, x + 32, y + 24, p ) ;
putimage ( i * 48 + 1, 1, p, COPY_PUT ) ;
rectangle ( i * 48, 0, ( i + 1 ) * 48, 33 ) ;
hidemouseptr ( ) ;
}
gotoxy ( 10, 25 ) ;
printf ( "Press any key to exit..." ) ;
choice = 1 ;
disp ( choice, p ) ;
changecursor ( c[choice - 1] ) ;
showmouseptr( ) ;
while ( !kbhit( ) )
{
getmousepos ( &button, &x, &y ) ;
if ( ( button & 1 ) == 1 )
{
for ( i = 0 ; i <4 ; i++ )
{
if ( choice - 1 == i )
continue ;
if ( y > 0 && y <33 )
{
if ( x > i * 48 && x <( i + 1 ) * 48 )
{
hidemouseptr( ) ;
disp ( choice, p ) ;
choice = i + 1 ;
disp ( choice, p ) ;
changecursor ( c[choice - 1] ) ;
showmouseptr( ) ;
}
}
}
}
}
getch( ) ;
}
disp ( int choice, char *p )
{
getimage ( ( choice - 1 ) * 48 + 1, 1, choice * 48, 32, p ) ;
putimage ( ( choice - 1 ) * 48 + 1, 1, p, NOT_PUT ) ;
}
initmouse( )
{
i.x.ax = 0 ;
int86 ( 0x33, &i, &o ) ;
return ( o.x.ax )
}
showmouseptr( )
{
i.x.ax = 1 ;
int86 ( 0x33, &i, &o ) ;
}
hidemouseptr( )
{
i.x.ax = 2 ;
int86 ( 0x33, &i, &o ) ;
}
restrictmouseptr ( int x1, int y1, int x2, int y2 )
{
i.x.ax = 7 ;
i.x.cx = x1 ;
i.x.dx = x2 ;
int86 ( 0x33, &i, &o ) ;
i.x.ax = 8 ;
i.x.cx = y1 ;
i.x.dx = y2 ;
int86 ( 0x33, &i, &o ) ;
}
getmousepos ( int *button, int *x, int *y )
{
i.x.ax = 3 ;
int86 ( 0x33, &i, &o ) ;
*button = o.x.bx ;
*x = o.x.cx ;
*y = o.x.dx ;
}
Freehand Drawing Using Mouse
Let us now try to gather all that we know about the mouse and its functions to develop a utility for drawing freehand... the way it is done in softwares like Paintbrush, CorelDraw etc. Here is the program...
#include "dos.h"
#include "graphics.h"
union REGS i, o ;
main( )
{
int gd = DETECT, gm, maxx, maxy, x, y, button, prevx, prevy ;
initgraph ( &gd, &gm, "c:\\tc\\bgi" ) ;
maxx = getmaxx( ) ;
maxy = getmaxy( ) ;
rectangle ( 0, 0, maxx, maxy ) ;
setviewport ( 1, 1, maxx - 1, maxy - 1, 1 ) ;
if ( initmouse( ) == 0 )
{
closegraph( ) ;
restorecrtmode( ) ;
printf ( "Mouse driver not loaded" ) ;
exit ( 1 ) ;
}
restrictmouseptr ( 1, 1, maxx - 1, maxy - 1 ) ;
showmouseptr( ) ;
while ( !kbhit( ) )
{
getmousepos ( &button, &x, &y ) ;
if ( ( button & 1 ) == 1 )
{
hidemouseptr( ) ;
prevx = x ;
prevy = y ;
while ( ( button & 1 ) == 1 )
{
line ( prevx, prevy, x, y ) ;
prevx = x ;
prevy = y ;
getmousepos ( &button, &x, &y ) ;
}
showmouseptr( ) ;
}
}
}
initmouse( )
{
i.x.ax = 0 ;
int86 ( 0x33, &i, &o ) ;
return ( o.x.ax )
}
showmouseptr( )
{
i.x.ax = 1 ;
int86 ( 0x33, &i, &o ) ;
}
hidemouseptr( )
{
i.x.ax = 2 ;
int86 ( 0x33, &i, &o ) ;
}
restrictmouseptr ( int x1, int y1, int x2, int y2 )
{
i.x.ax = 7 ;
i.x.cx = x1 ;
i.x.dx = x2 ;
int86 ( 0x33, &i, &o ) ;
i.x.ax = 8 ;
i.x.cx = y1 ;
i.x.dx = y2 ;
int86 ( 0x33, &i, &o ) ;
}
getmousepos ( int *button, int *x, int *y )
{
i.x.ax = 3 ;
int86 ( 0x33, &i, &o ) ;
*button = o.x.bx ;
*x = o.x.cx ;
*y = o.x.dx ;
}