/************************************************************************
 *
 * display.h - Interface declaration for the result display subsystem
 *
 * $Id: display.h 580483 2007-09-28 20:55:52Z sebor $
 *
 ************************************************************************
 *
 * Licensed to the Apache Software  Foundation (ASF) under one or more
 * contributor  license agreements.  See  the NOTICE  file distributed
 * with  this  work  for  additional information  regarding  copyright
 * ownership.   The ASF  licenses this  file to  you under  the Apache
 * License, Version  2.0 (the  "License"); you may  not use  this file
 * except in  compliance with the License.   You may obtain  a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the  License is distributed on an  "AS IS" BASIS,
 * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
 * implied.   See  the License  for  the  specific language  governing
 * permissions and limitations under the License.
 * 
 **************************************************************************/

#ifndef RW_DISPLAY_H
#define RW_DISPLAY_H

#include "target.h" /* For target_opts */

/**
   Output format mode enumeration.

   Used to determine the mode used in producing output.
*/
enum OutputFmt {
    FMT_PLAIN = 0, /**< plain text output. */
    FMT_XTERM, /**< xterm colored output. */
    FMT_VERBOSE, /**< verbose text output. */
    FMT_INDEP, /**< Non-targeted formated output. */
    FMT_HTML /**< HTML formated output. */
};

/**
   Sets the output functions referenced.
*/
void set_output_format (enum OutputFmt format);

/**
   Sets the column order and widths (if applicable) for output.

   @param format custom format string for output.
*/
extern void (*set_header) (const char* format);

/**
   Prints the table preamble formatting, followed by the formatted header row.
*/
extern void (*print_header) (const char* const argv[]);

/**
   Prints the formatted header column for a target row.

   This method uses the target_name global (defined in cmdopt.h), and flushes
   stdout after printing.

   @see target_name
*/
extern void (*print_target) (const struct target_opts* options);

/**
   Updates the display of a (non-final) status indicator

   This function is only useful for FMT_XTERM.

   @param time 0 > time indicates -signal number, otherwise time remaining
*/
extern void (*set_progress) (int time);

/**
   Prints the formatted results for a target row.

   @param status describes the results of the run
*/
extern void (*print_status) (const struct target_status* status);


/**
   Prints the closing formatting for the table.
*/
extern void (*print_footer) (int count, const struct target_status* status);


#endif   /* RW_DISPLAY_H */
