/*
 * src/screen.h - screen management
 *
 * Copyright (C) 1999, 2000 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
 *
 * This is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 * 
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this package; see the file COPYING.  If not, write to
 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.  
 */

#ifndef __SCREEN_H__
#define __SCREEN_H__

#if HAVE_CONFIG_H
# include <config.h>
#endif 

#include "client.h"

#define BIG_SNAP 12
#define SMALL_SNAP 8

/*
 * Raise the client window C to the top in the stacking order.
 */
void raise_client (client_t c);

/*
 * Unmap the client C.
 */
void hide_client (client_t c);

/*
 * Map the window of client C back to the screen.
 */
void unhide_client (client_t c);

/*
 * Let the user interactively resize the window of client C.
 */
void resize_client (client_t c);

/*
 * Resize client C relatively by REL_X and REL_Y units, the units
 * depending on the client.
 */
void resize_client_to (client_t c, int rel_x, int rel_y);

/*
 * Let the user drag the window of client C to another position on the
 * screen.
 */
void move_client (client_t c);

/*
 * Move the client's position by the amount DX pixels in horizontal
 * direction and DY pixels in vertical direction, if RELATIVE is false.
 * Otherwise, set the position to absolute DX/DY.
 */
void move_client_to (client_t c, int rel, int dx, int dy);

/*
 * Return the position of the mouse pointer in the variables pointed
 * to by X and Y.
 */
void get_mouse_position (int * x, int * y);

/*
 * Make a client visible which has been hidden by a call to
 * make_client_invisible() below.  Simply move the clien window C to
 * its original position on the screen.
 */
void make_client_visible (client_t c);

/*
 * Make the client window C invisible by moving it off the visible
 * screen.
 */
void make_client_invisible (client_t c);

#endif /* not __SCREEN_H__ */
