text:
\documentclass[UTF8,12pt]{article} % 12pt 为字号大小
\usepackage{amssymb,amsfonts,amsthm}
%\usepackage{fontspec,xltxtra,xunicode}
%\usepackage{times}
\usepackage{amsmath,bm,braket}
\allowdisplaybreaks[4]
\usepackage{mdwlist}
\usepackage[colorlinks,linkcolor=blue]{hyperref}
\usepackage{cleveref}
\usepackage{float}
\usepackage{enumerate}
\usepackage{extarrows}
\usepackage[ruled,linesnumbered]{algorithm2e}
%\numberwithin{equation}{section}

%----------
% 定义中文环境
%----------

\usepackage{xeCJK}
\setCJKmainfont[BoldFont={Heiti SC Light},ItalicFont={Kaiti SC Regular}]{Songti SC Regular}
\setCJKsansfont{Heiti SC Light}
\setCJKfamilyfont{song}{Songti SC Regular}
\setCJKfamilyfont{zhhei}{Heiti SC Light}
\setCJKfamilyfont{zhkai}{Kaiti SC Regular}
\setCJKfamilyfont{zhfs}{STFangsong}
\setCJKfamilyfont{zhli}{Libian SC Regular}
\setCJKfamilyfont{zhyou}{Yuanti SC Regular}

\newcommand*{\songti}{\CJKfamily{zhsong}} % 宋体
\newcommand*{\heiti}{\CJKfamily{zhhei}}   % 黑体
\newcommand*{\kaiti}{\CJKfamily{zhkai}}  % 楷体
\newcommand*{\fangsong}{\CJKfamily{zhfs}} % 仿宋
\newcommand*{\lishu}{\CJKfamily{zhli}}    % 隶书
\newcommand*{\yuanti}{\CJKfamily{zhyou}} % 圆体

%----------
% 版面设置
%----------
%首段缩进
\usepackage{indentfirst}
\setlength{\parindent}{2em}

%行距
\renewcommand{\baselinestretch}{1.2} % 1.2倍行距

%页边距
\usepackage[a4paper]{geometry}
\geometry{verbose,
  tmargin=2cm,% 上边距
  bmargin=2cm,% 下边距
  lmargin=2.5cm,% 左边距
  rmargin=2.5cm % 右边距
}

%----------
% 其他宏包
%----------
%图形相关
\usepackage[x11names]{xcolor} % must before tikz, x11names defines RoyalBlue3
\usepackage{graphicx}
\graphicspath{{figures/}}
\usepackage{pstricks,pst-plot,pst-eps}
\usepackage{subfig}
\def\pgfsysdriver{pgfsys-dvipdfmx.def} % put before tikz
\usepackage{tikz}

%原文照排
\usepackage{verbatim}

%网址
\usepackage{url}

%----------
% 定理、习题与解答环境
%----------
%定理环境
\usepackage[most]{tcolorbox}
\newtcbtheorem[number within=section]{theorem}{Theorem}{
     enhanced,
     breakable,
     sharp corners,
     attach boxed title to top left={
       yshifttext=-1mm
     },
     colback=blue!4!white,
     colframe=blue!75!black,
     fonttitle=\bfseries,
     boxed title style={
       sharp corners,
       size=small,
       colback=blue!75!black,
       colframe=blue!75!black,
     }
}{theorem}

\newtcbtheorem[number within=section]{definition}{Definition}{
     enhanced,
     breakable,
     sharp corners,
     attach boxed title to top left={
       yshifttext=-1mm
     },
     colback=blue!4!white,
     colframe=blue!75!black,
     fonttitle=\bfseries,
     boxed title style={
       sharp corners,
       size=small,
       colback=blue!75!black,
       colframe=blue!75!black,
     }
}{definition}

\newtcbtheorem[number within=section]{corollary}{Corollary}{
     enhanced,
     breakable,
     sharp corners,
     attach boxed title to top left={
       yshifttext=-1mm
     },
     colback=blue!4!white,
     colframe=blue!75!black,
     fonttitle=\bfseries,
     boxed title style={
       sharp corners,
       size=small,
       colback=blue!75!black,
       colframe=blue!75!black,
     }
}{corollary}

\newtcbtheorem[number within=section]{myboxes}{Box}{
     enhanced,
     breakable,
     sharp corners,
     attach boxed title to top left={
       yshifttext=-1mm
     },
     %colback=white,
     colframe=black!75!white,
     fonttitle=\bfseries,
     boxed title style={
       sharp corners,
       size=small,
       colback=black!75!white,
       colframe=black!75!white,
     }
}{myboxes}

%习题环境
\newtcbtheorem[number within=section]{exercise}{Problem}{
     enhanced,
     breakable,
     sharp corners,
     attach boxed title to top left={
       yshifttext=-1mm
     },
     colback=white,
     colframe=black,
     fonttitle=\bfseries,
     boxed title style={
       sharp corners,
       size=small,
       colback=black,
       colframe=black,
     }
}{Problem}

%解答环境
\ifx\proof\undefined\
\newenvironment{proof}[1][\protect\proofname]{\par
\normalfont\topsep6\p@\@plus6\p@\relax
\trivlist
\itemindent\parindent
\item[\hskip\labelsep
\scshape
#1]\ignorespaces
}{%
\endtrivlist\@endpefalse
}
\fi

\renewcommand{\proofname}{\it{Solution}}

%==========
% 正文部分
%==========

\begin{document}

\title{Chapter 5: Approximation methods}
\author{Yuquan Chen, Liu Zhu}
\date{2019/05/21} % 若不需要自动插入日期，则去掉前面的注释；{ } 中也可以自定义日期格式
\maketitle

\section{Time-independent perturbation theory}

We start with the problem really close to a solved problem, then we can use the solution at hand to do approximation. \\

\begin{myboxes}{Recap for Taylor expansion}{}
\begin{equation}
   f(x)\simeq f(x_0)+f'(x_0)(x-x_0)+\cdots+\frac{f^n(x_0)}{n!}(x-x_0)^n+\cdots .
\end{equation}
If keep all the way to $(x-x_0)^2$, then we can do a fit with a polynomial function.
\end{myboxes}

For quantum mechanics:
\begin{equation}
    H=H_{0} + H'
\end{equation}
$H_0$ has a known solution for eigen energy $E^{(0)}_{n}$, and eigenstates $\{\ket{n^{(0)}}\}$:
\begin{equation}
    H_0\ket{n^{(0)}}=E^{(0)}_n\ket{n^{(0)}}
\end{equation}
$H'$ is perturbational part of Hamiltonian, it can express as:
\begin{equation}
    H'=\lambda V
\end{equation}
where $\lambda$ is a number, and $\lambda\ll1$. $V$ is another part of Hamiltonian. Then we try to find $H\ket{n} = E_{n}\ket{n}$. $E_{n}$ must be a function of $H$, which is a function of $\lambda$, so as $\ket{n}$. Therefore we can make a Taylor expansion of $E_{n}(\lambda)$ and $\ket{n(\lambda)}$:
\begin{align}
E_n(\lambda) &= E_n^{(0)}+\lambda E^{(1)}_n+\lambda^2 E^{(2)}_n+\cdots \\
\ket{n(\lambda)} &= \ket{n^{(0)}}+\lambda \ket{n^{(1)}}+\lambda^2 \ket{n^{(2)}}+\cdots
\end{align}
where $\lambda E^{(1)}_{n}$ is first order energy shift. $\lambda E^{(2)}_n$ is second order energy shift. Plug the expansion back to $H\ket{n}=E\ket{n}$ with $H=H_0+\lambda V$:
\begin{multline}
(H_0+\lambda V) \cdot \left(\ket{n^{(0)}}+\lambda \ket{n^{(1)}}+\lambda^2\ket{n^{(2)}}+\cdots\right) \\
= (E^{(0)}_n+\lambda E^{(1)}+\lambda^2E^{(2)}+\cdots)\cdot (\ket{n^{(0)}}+\lambda \ket{n^{(1)}}+\lambda^2\ket{n^{(2)}}+\cdots)
\label{expansion}
\end{multline}
do not contain $\lambda$, equation (\ref{expansion}) $\Rightarrow H_0\ket{n^{(0)}}=E^{(0)}_n\ket{n^{(0)}}$, for $\lambda^{1}$ term we can get:
\begin{equation}
H_{0} \ket{n^{(1)}}+V\ket{n^{(0)}}=E^{(0)}_n\ket{n^{(1)}}+E^{(1)}_n\ket{n^{(0)}}
\label{order1}
\end{equation}
apply $\bra{n^{(0)}}$ to the left:
\begin{equation}
\boxed{ \braket{n^{(0)}|V|n^{(0)}} = E^{(1)}_{n}}
\label{e1}
\end{equation}
which is \textbf{first order perturbation for $E_{n}$}, plug in to $E_{n} = E^{(0)}_{n} + \lambda E^{(1)}_{n}$, we can get:
\begin{equation}
    \begin{aligned}
        E_n= E^{(0)}_n+ \braket{n^{(0)}|\lambda V|n^{(0)}} \to \boxed {E_n=E^{(0)}+\braket{n^{(0)}|H'|n^{(0)}}}
    \end{aligned}
\end{equation}

For $H=H_0+\lambda V$, we can express it in the energy representation in $\{\ket{n^{(0)}}\}$,
\begin{align}
H_0 =
\begin{pmatrix}
     E^{(0)}_0& 0         & 0         & \ldots    & 0         \\
     0        & E^{(0)}_1 & 0         & \ldots    & 0         \\
     0        & 0         & E^{(0)}_2 & \ldots    & 0         \\
     \vdots   & \vdots    & \vdots    & \ddots    & \vdots    \\
     0        & 0         & 0         & \ldots    & E^{(0)}_n \\
\end{pmatrix}
\end{align}
$\lambda V$ in the same basis can express as:
\begin{align}
\lambda V =
\begin{pmatrix}
    \lambda V_{11} & \lambda V_{12} & \ldots & \lambda V_{1n} \\
    \lambda V_{21} & \lambda V_{22} & \ldots & \lambda V_{2n} \\
    \vdots         & \vdots         & \ddots & \vdots         \\
    \lambda V_{n1} & \lambda V_{n2} & \ldots & \lambda V_{nn} \\
\end{pmatrix}
\end{align}
For $n=0$, $E_0\simeq E^{(0)}_0+\lambda V_{11}$. First order perturbation is just $n$ row, $n$ colunm for matrix $H_0+\lambda V$ in $\{\ket{n^{(0)}}\}$ basis.

Now we try to find first order pertubrbation for state. Recall equation (\ref{order1}) and (\ref{e1}):
\begin{align*}
\begin{cases}
H_0\ket{n^{(1)}}+V\ket{n^{(0)}} = E^{(0)}_n\ket{n^{(1)}}+E^{(1)}_n\ket{n^{(0)}} \\
\braket{n^{(0)}|V|n^{(0)}} = E^{(1)}_n
\end{cases}
\end{align*}
we try to solve $\ket{n^{(1)}}$, we can apply $\bra{k^{(0)}}$ to left, with $k\neq n$, then $\braket{k^{(0)}|n^{(0)}}=0$. We also require $E^{(0)} \neq E^{(0)}$, we can get
\begin{align}
\braket{k^{(0)}|H_0|n^{(1)}}+\braket{k^{(0)}|V|n^{(0)}} &= E^{(0)}_n\braket{k^{(0)}|n^{(1)}}+E^{(1)}_n\braket{k^{(0)}|n^{(0)}} \\
\Rightarrow E^{(0)}_k\braket{ k^{(0)} | n^{(1)} }+\braket{k^{(0)}|V|n^{(0)}} &= E^{(0)}_n\braket{k^{(0)} | n^{(1)}} \label{ek}
\end{align}
The term $\braket{k^{(0)} | n^{(1)}}$ is an inner product between an unknown state $\ket{n^{(1)}}$ and a state in the known basis, it called ``amplitude''.

We want to solve the state $\ket{n^{(1)}}$, from the \textbf{Superposition Principle}, we know that $\ket{n^{(1)}}=\sum_k{C_k \ket{k^{(0)}}}$, since $\{\ket{k^{(0)}}\}$ form a basis. If we can solve every $C_k$, the state $\ket{n^{(1)}}$ is known. We can easily observe that $\braket{k^{(0)} | n^{(1)}} \to \sum_k{ C_k \braket{ k^{(0)} | n^{(0)} } } \to \sum_k{ C_k \delta_{k,n} } \to C_k$, so all we need is to solve $\braket{ k^{(0)} | n^{(1)} }$.

From equation (\ref{ek}) we can solve $\braket{ k^{(0)} | n^{(1)} }$, which qual to $C_k$:
\begin{equation}
    \boxed{ C_k = \frac{\braket{k^{(0)}|V|n^{(0)}}}{E^{(0)}_n-E^{(0)}_k}}
\end{equation}
notice that $k\neq n$. Therefore, we can get the {\bf first order perturbation for state $\ket{n}$ }
\begin{equation}
    \boxed{ \ket{n^{(1)}} = \sum_{k\neq m} \frac{ \braket{ k^{(0)}|V | n^{(0)} } }{ E^{(0)}_n - E^{(0)}_k } \ket{ k^{(0)}}}
\end{equation}
plug it and $H'=\lambda V$ back to $ \ket{n} = \ket{n^{(0)}} + \lambda \ket{n^{(1)}} $ we get
\begin{equation}
    \boxed{ \ket{n} = \ket{n^{(0)}} + \sum_{k\neq m} \frac{ \braket{ k^{(0)}|H'| n^{(0)} } }{ E^{(0)}_n - E^{(0)}_k } \ket{ k^{(0)}}}
\end{equation}
where $\braket{k^{(0)}|H'|n^{(0)}}$ can be the matrix element in the $k$ row and $n$ colum of matrix $H'$ in the basis of $\{\ket{n^{(0)}}\}$:
\begin{align}
H_{0} + H' \xrightarrow{\text{matrix in } \{\ket{n^{(0)}}\}}
\begin{pmatrix}
    &  &  &  \\
    & E^{(0)}_{ka} & H^{(0)}_{kn} & \\
    &  & E^{(0)}_{bn} & \\
    &  & & \\
\end{pmatrix}
\end{align}

\begin{myboxes}{Example for spin - $\frac{1}{2}$ system}{}
We have
\begin{align}
H_{0} = \Omega \sigma_{z} = \begin{pmatrix}\Omega &0 \\ 0 &\Omega\end{pmatrix},~
H' = \lambda\sigma_{x} = \begin{pmatrix}0 &\lambda \\ \lambda &0\end{pmatrix}
\end{align}
The Hamiltonian is
\begin{align}
H = H_{0} + H' = \begin{pmatrix}\Omega &\lambda \\ \lambda & \Omega\end{pmatrix}, \text{ and } \Omega \gg \lambda
\end{align}
we can solve eigenenergy
\begin{align}
E_{1} = \Omega + \frac{\lambda^2}{2\Omega},~ E_{2} = -\Omega - \frac{\lambda^2}{2\Omega}
\end{align}
and the eigenstates
\begin{align}
\ket{\psi_{1}} = \begin{pmatrix}1 - \frac{\lambda^2}{2\Omega^2} \\ \frac{\lambda}{2\Omega}\end{pmatrix},~
\ket{\psi_{2}} = \begin{pmatrix}-\frac{\lambda}{2\Omega} \\ 1-\frac{\lambda^2}{2\Omega^2}\end{pmatrix}
\end{align}
\end{myboxes}

\end{document}

max_stars_repo_path: Lecture notes(me)/Chapter 5/0521.tex

max_stars_repo_name: YQChen-QI/Quantum-Mechanics

max_issues_repo_path: Lecture notes(me)/Chapter 5/0521.tex

max_issues_repo_name: YQChen-QI/Quantum-Mechanics

max_forks_repo_path: Lecture notes(me)/Chapter 5/0521.tex

max_forks_repo_name: YQChen-QI/Quantum-Mechanics


text:
\documentclass{article}
\usepackage{hevea}

\def\t#1{{\tt #1}}
\def\DYNAMIC{\t{DYNAMIC}}
\title{Setting Up cygwin and OCaml}
\author{Scott McPeak \and George Necula}

\begin{document}
\maketitle

 This document is intended to get you started with OCAML and the other tools
that are necessary for CCured and other projects of ours. These tools work on
Linux and Windows (NT4.0, 2000, XP and also less reliably on 95/98/Me).

 If you use Linux then you can go directly to Section~\ref{sec-ocaml}.

\section{If you want to use Windows}

 \subsection{Get \t{cygwin}}

 You must have a bunch of Unix tools installed on your machine. (In the future
we might be able to avoid these but for now you are better off with them.).
Here is what I (George) do to install Cygwin. You need a good network
connection for this.
\begin{itemize}
\item Create a directory \t{C:\backslash Download\backslash cygwin}
\item Go to \ahrefurl{http://sources.redhat.com/cygwin} and click \t{Install
cygwin} icon. Download \t{setup.exe} to the directory you just created.
\item Run \t{setup.exe} and select ``Download to local directory''. Select all
the packages. This will take a while (~ 30 minutes)
\item Run \t{setup.exe} again and not select to ``Install from local
directory''. It is best to {\bf deselect} the \t{tetex} package since I found
it to interfere with other installations of Latex.
\item I choose \t{C:\backslash Programs\backslash cygwin}
as the home for \t{cygwin}, I use \t{DOS} as the default text file and I
choose ``Install for All''.
\item Add \t{C:\backslash Programs\backslash cygwin\backslash bin} to your
PATH. You must put it first in the ``System Variables'' PATH (In Control Panel/System/Advanced/Environment
Variables'' and {\bf put it first} so that it comes before the default
c:/WinNT/system32. You can verify that you got it right if you get
\t{/usr/bin/find} when you run \t{which find}.
\item Verify that you can run \t{/usr/bin/perl} from the command line within
\t{bash}.
\end{itemize}

\section{Get OCaml}\label{sec-ocaml}

The next step for most people is to download and install the Ocaml
compiler system.  This is available at:

  \ahrefurl{http://caml.inria.fr/ocaml/}

At the time of writing, the current version is 3.07. The following
instructions assume that you will build from sources even on Windows (instead
of using the Native compiler provided). Here the rough sequence of steps:
\begin{itemize}
\item Download and unpack the sources
\item Go in that directory, start \t{bash} if on Windows, and run
\begin{verbatim}
% ./configure
% make world
% make opt
% make install
\end{verbatim}

 The first command might fail to configure some libraries but that's Ok.
\end{itemize}

To test your ocaml distribution, try:

\begin{verbatim}
  % which ocaml
  /usr/local/bin/ocaml

  % ocaml
        Objective Caml version 3.07

  # exit 0;;    <-- you type "exit 0;;", and press enter
\end{verbatim}

 If you intend to program in Ocaml then you should also install the emacs
support files for ocaml. This will give you nice fontification and
indentation. If you check in code that is not indented nicely some members of
the project will not be pleased!

 \subsection{Debugging Support Ocaml}

 If you expect to need to run the debugger our projects are set up in such a
way that they will invoke the debugger for you. How to do that is described in
each project's documentation. But for that support to work you must add the
following code to your .emacs file. Also, if you are using GNU-emacs then you
must set the Coding style for your files to ``unix'' (CTRL-X RET F).

\begin{verbatim}
(defvar ocamldebug-history nil)
(defun my-camldebug (command-line)
  "Run camldebug on program FILE in buffer *camldebug-FILE*.
The directory containing FILE becomes the initial working directory
and source-file directory for camldebug.  If you wish to change this, use
the camldebug commands `cd DIR' and `directory'."
  (interactive
   (list (read-from-minibuffer "Run ocamldebug (like this): "
          (if (consp ocamldebug-history)
       (car ocamldebug-history)
     "ocamldebug")
                                 nil
                               nil
          '(ocamldebug-history . 1))))
  ; call something from camldebug.el to make sure it is loaded
  (camldebug-numeric-arg 1)

  ; We must override the camldebug-display-line
  (if (not (fboundp 'original-camldebug-display-line))
      (fset 'original-camldebug-display-line
            (symbol-function 'camldebug-display-line)))
  (defun camldebug-display-line (true-file character kind)
    ; See if true-file exists
    (if (not (file-exists-p true-file))
        ; Try to run cygpath to convert the file name
        (with-temp-buffer
          (if (equal 0
                     (call-process "cygpath" nil t t "-m" true-file))
              (progn
                ; Drop the end of line
                (when (bolp)
                  (backward-delete-char 1))
                (setq true-file (buffer-string))))))
    (original-camldebug-display-line true-file character kind))

  (pop-to-buffer (concat "*camldebug*"))
  (setq words (split-string command-line))
  (message "Current directory is %s" default-directory)
  (apply 'make-comint (cons "camldebug"
                      (cons (car words)
                      (cons nil (cdr words)))))
  (set-process-filter (get-buffer-process (current-buffer))
                      'camldebug-filter)
  (set-process-sentinel (get-buffer-process (current-buffer))
                        'camldebug-sentinel)
  (camldebug-mode)
  (camldebug-set-buffer))
\end{verbatim}

\section{Set the environment variables}

 Make sure that /usr/local/lib in in your path. If you are on Windows this
 means ``C:/Programs/cygwin/usr/local/lib''.

\section{If you need CVS access}

 See the \ahref{cvssetup.html}{separate instructions}.

\section{Useful Links}
\begin{itemize}
 \item  Tutorial on ML:
   \ahrefurl{http://www.dcs.napier.ac.uk/course-notes/sml/manual.html}
  \item Documentation and sources for Ocaml:
        \ahrefurl{http://caml.inria.fr/ocaml/}
  \item Manual for GNU make:
        \ahrefurl{http://www.gnu.org/manual/make/html\_chapter/make\_toc.html}

 \end{itemize}

\end{document}

ext: tex

max_stars_repo_name: petr-muller/abductor

max_stars_repo_licenses: Intel Unlicense

max_issues_repo_name: petr-muller/abductor

max_issues_repo_licenses: Intel Unlicense

max_forks_repo_name: petr-muller/abductor

max_forks_repo_licenses: Intel Unlicense


text:
\chapter{History of Changes}
\label{history}

\renewcommand{\thesection}{}
\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}}
\makeatletter
\def\@seccntformat#1{\csname #1ignore\expandafter\endcsname\csname the#1\endcsname\quad}
\let\sectionignore\@gobbletwo
\let\latex@numberline\numberline
\def\numberline#1{\if\relax#1\relax\else\latex@numberline{#1}\fi}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.7.0 -- September 2021}

\subsection*{\bigicon{box_software} Updates}

\begin{itemize}

  \item New GeoTIFF compression types were added to the CDAT save options panel.

  \item The pass\_type attribute in CoastWatch HDF data files is no longer
  updated to match the temporal and spatial coverage of newly created files.
  The attribute was causing confusion when registering level 2 files that
  covered a small area of a larger master region.  The CoastWatch HDF metadata
  specification was similarly updated.

  \item File reading was improved for NetCDF files with CoastWatch
  HDF and CF compliant metadata for variables of various ranks.

  \item More complete support for gamma enhancement in GeoTIFF images was
  added for writing the equation used for scaling data values to indexed
  colour map values.

  \item The cwcomposite tool was modified to discard the history attribute
  in its input files and write only its own history attribute.  The history
  attribute combined from multiple inputs was overflowing the allowed
  metadata limits.  The -{-}keephistory option was added to override the
  new behaviour.

  \item Error handling was improved when parsing user colour palette
  XML files read by CDAT and the cwrender tool.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.6.1 -- March 2021}

\subsection*{\bigicon{box_software} Updates}

\begin{itemize}

  \item GeoTIFFs written by CDAT, cwrender, and cwexport now conform to the
  cloud-optimized GeoTIFF recommendations.

  \item GeoTIFFs created by cwrender and cwxeport now have extra compression
  options available: LZW and JPEG.

  \item The cwmath, cwcomposite, and cwregister2 tools have been updated to
  handle floating-point data variables with scaling factors.

  \item NetCDF NcML datasets are now supported to help with data file
  aggregation and metadata modification.

  \item The cwrender tool now has a -{-}compositehint option to help with
  automatically setting function types and ranges for rendering color composites.

  \item Plot legends from cwrender and CDAT now contain more information
  about grid mapped projections from NetCDF files.

\end{itemize}

\subsection*{\bigicon{bug_yellow} Bug fixes}
\begin{itemize}

  \item There was an error produced in cwrender when rendering files that had
  already been closed by the Java garbage collector.  This has been corrected
  and the error no longer occurs.

  \item HDF 4 files were being written with signed missing\_value attributes
  even when the variable data was unsigned.  This has been corrected so that
  the missing\_value and variable types match.

  \item Some data files containing geographic projections that span both the
  prime meridian and anti-meridian were not being recognized -- this is now
  fixed.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.6.0 -- August 2020}

\subsection*{\bigicon{box_software} Updates}

\begin{itemize}

  \item CDAT now remembers the last directory that it was in when a file
  was opened.

  \item CDAT now has increased memory defaults to help with reading
  certain NetCDF datasets.

  \item The cwregister2 tool now has a -{-}sensorhint option to help with
  processing data from sensors that cannot be detected automatically.

  \item The cwrender tool now has added documentation on how wind barbs
  are rendered depending on the wind speed units.

  \item The cwmath documentation now shows examples of how to use the new
  Java expression parsing syntax.

  \item The cwregister2 tool now accounts for the full pixel size at the edges
  of source datasets.  Previously there were small gaps when assembling
  multiple successive granules from some sensors.

  \item The cwregister2 tool now has a -{-}nogroup option to remove
  the leading group path name when source variables are contained in a group.

\end{itemize}

\subsection*{\bigicon{bug_yellow} Bug fixes}
\begin{itemize}

  \item There was an issue reading NetCDF files with scaled variables that are
  missing the add\_offset attribute value.

  \item The cwregister2 tool had issues with automatically determining the
  resolution of some sensor data with repeated locations such as OLCI.

  \item The export of NetCDF-3 files from cwexport and CDAT wrote incorrect
  lat/lon data for some cylindrical projections.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.5.1 -- November 2019}

\subsection*{\bigicon{box_software} Updates}

\begin{itemize}

  \item The Mac and Linux installation sections in the user's guide have
  new notes on using the command line program man pages.

  \item The cwdownload tool has a new fallback behaviour to ignore an invalid
  SSL certificate when downloading over an SSL connection.

  \item The command line tools have a new warning message when an out of
  memory error occurs with advice on how to re-run the command with a higher
  memory setting.

  \item The cwexport tool now exports data to 32-bit floating point GeoTIFF
  images to help with importing scientific data into GIS systems.

  \item The cwcomposite tool has a new  -{-}collapsetime option that helps
  preserve time metadata when creating long time series composites.

  \item The cwrender tool has a new -{-}paletteimage option that creates an
  image of all available color palettes and their names to help users choose a
  palette.

  \item The cwsample tool now produces an error when the file being processed
  does not have a compatible data projection for sampling.  Previously versions
  ran but produced incorrect results for some swath projection files.

  \item The NetCDF 3 and 4 output from CDAT and cwexport has some changes in how
  the coordinate metadata is written to help CF-compliant readers recognize
  the projection.

  \item The cwmath tool has been updated to use the Java expression parser
  syntax by default rather than the legacy syntax.

  \item The cwrender tool has a new -{-}varname option that overrides the
  variable name in the color bar legend with a custom label.

\end{itemize}

\subsection*{\bigicon{bug_yellow} Bug fixes}
\begin{itemize}

  \item CDAT and cwrender had an issue when overwriting existing output images
  with a smaller size image -- garbage data was being left at the end of the
  file.

  \item GeoTIFF writing from cwrender or CDAT was broken under the previous
  release since migrating to OpenJDK 11.  This has been fixed.

  \item The HDF 4 library has a write limitation of 65535 bytes for attributes.
  This was causing an error when compositing long time series.  The error
  has been fixed by truncating any attribute that exceeds this length with
  a warning, and also an option added to cwcomposite (see above).

  \item Some Sentinal-1A data was being rendered in a mirrored orientation.
  This has been fixed.

  \item CDAT and cwrender had issues when rendering land polygons near the
  edges of some projections.  This has been corrected for geographic,
  swath, orthographic, and GVNSP projections.

  \item The cwgraphics tool had an issue with rendering graphics correctly
  for projections requiring an orientation flip for display.

  \item CDAT and cwexport were writing incorrect missing value metadata to
  NetCDF 3 variables.  This has been corrected and now matches the NetCDF
  4 output.  The issue affected statistics and display of data from the
  exported NetCDF 3 files.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.5.0 -- April 2019}

\subsection*{\bigicon{box_software} Updates}

\begin{itemize}

  \item The Java VMs on all supported platforms have been upgraded to Java 11
  using Oracle OpenJDK 11.0.1, and source code migrated accordingly.

  \item The NOAA 1b format AVHRR reading has been updated to handle Metop-3
  files.

  \item Some of the command line and GUI tools have started to be migrated to
  use a more flexible and standardized event logging system.  The migration
  will be complete in the next version.

  \item A new tool called cwregister2 is now available to perform fast
  multithreaded registration with special handling for terrain-corrected data.

  \item Various code modules are being migrated and refactored towards
  being able to run some of the command line tools from CDAT, based on
  user requests.

  \item The cwcomposite tool has been completely re-written to perform fast
  multithreaded composition.

\end{itemize}

\subsection*{\bigicon{bug_yellow} Bug fixes}
\begin{itemize}

  \item The composite tool exited with an error when attempting to combine
  NetCDF datasets with cylindrical map projections that were not equally
  spaced, and geostationary satellite projections.  These have been fixed and
  it now runs correctly.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.4.1 -- October 2018}

\subsection*{\bigicon{box_software} Updates}

\hspace{0.4cm} {\bf Graphical tools}
\begin{itemize}

  \item CDAT now computes point data overlay statistics in a background thread
  for a faster user experience.

  \item CDAT has new oceanographic palettes derived from the Python matplotlib
  cmocean package.

  \item The CDAT color enhancement functions have a new option ``Gamma" for
  displaying visible band satellite data.  The gamma function accounts for
  computer display gamma correction when showing visible data scaled between
  0\% and 100\% intensity values.

  \item The visual appearance of coastlines plotted on images in CDAT and
  cwrender has been improved in some cases by adding a new higher
  resolution coastline database, and adjusting the algorithm that selects
  the coastline detail level to use for the scene being displayed.

\end{itemize}

\hspace{0.4cm} {\bf Command line tools}
\begin{itemize}

    \item The cwdownload and cwstatus tools now support SSL network connections
    via the HTTPS protocol.

    \item A new tool {\em cwscript} is available for running scripts in
    BeanShell (\url{http://beanshell.org}) that can make calls to the
    CoastWatch Utilities API.  An extra launcher {\em cwgscript}
    is also available to run scripts that create GUI windows.  The cwscript
    manual page gives several examples of scripts.

    \item The cwregister tool has been improved and now runs up to 1.9x faster.

    \item The cwrender tool has a new enhancement type 'gamma' for use with
    visible band satellite data.

    \item The cwrender tool has a new -{-}palettelist option that prints a list
    of valid palette names that can be specified for color enhancement.

\end{itemize}

\subsection*{\bigicon{bug_yellow} Bug fixes}
\begin{itemize}

  \item The CDAT window had an issue preserving the view contents after
  resizing -- it now works more like Google Earth.

  \item CDAT point data overlay display now correctly saves overlay changes
  when the point data chooser dialog window is closed.

  \item The automatic documentation generation system was re-written to
  correct various user's guide and manual page formatting issues.

  \item The cwrender tool no longer creates a 'palette' directory in the
  user resources if the directory is not found.  This was causing issues
  on some systems.

  \item GOES-style geostationary projection is now computed correctly.
  Previously only Meteosat/Himawari scanners were supported.

  \item CDAT on Windows now correctly detects when a user double-clicks
  a file in the Windows file explorer, and opens the file in the currently
  running CDAT instance, rather than creating a new CDAT window.

  \item CDAT on Linux uses a new GUI theme as a workaround for a tab bar
  issue.  When many file tabs were opened, the tab bar became unusable.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.4.0 -- March 2018}

\subsection*{\bigicon{box_software} Updates}

\hspace{0.4cm} {\bf Graphical tools}
\begin{itemize}

  \item CDAT has a new menu item {\gui Open Recent} under the {\gui File} menu,
  with a list of recently opened files for quick access.

  \item CDAT has new items in the {\gui View} menu for controlling the data
  view, copying the view zoom between tabs, and showing/hiding the top toolbar
  and left-side control tabs.

  \item Tabs in CDAT now have a little x close button built into the tab.

  \item The documentation for CDAT now has a section on setting memory limits
  in the user preferences.

\end{itemize}

\hspace{0.4cm} {\bf Command line tools}
\begin{itemize}

  \item The cwmath tool has been largely re-written to improve performance.
  The tool now processes 2D chunks of data rather than individual rows, and
  uses a new Java Language math expression syntax.  An emulation parser mode
  supports legacy expressions.  New options can be used to fully take advantage
  of the performance increase and specify a greater variety of output variable
  types without having to use a template variable: -{-}scale none,
  -{-}skip-missing, -{-}missing, -{-}parser, and -{-}size int/uint/long/ulong/double.

  \item The cwrender tool now has a -{-}font option to set the legend and overlay
  font and a -{-}fontlist option to list system-specific fonts available.

  \item The user's guide now has a section on hidden command line options for
  the command line tools (after the tool manual pages), to be used for
  performance tuning.

\end{itemize}

\subsection*{\bigicon{bug_yellow} Bug fixes}
\begin{itemize}

  \item CDAT full screen mode now works correctly on multi-monitor setups.

  \item Reading of time axis metadata is now more complete for NetCDF 4 files.

  \item The cwgraphics tool now correctly omits the scale factor and offset
  for the graphics byte variable it creates.  Scale and offset are reserved
  for packed data only.

  \item The cwregister tool now distinguishes between a file not found error
  and a format error for the master file.

  \item Detection of link errors with the native HDF library code is now more
  user-friendly.

  \item The bundled Java VM version has been updated to 1.8.0\_162.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.3.2 -- October 2017}

\subsection*{\bigicon{box_software} Updates}

\hspace{0.4cm} {\bf Graphical tools}

\begin{itemize}

  \item CDAT optionally checks on startup if software update is available.

  \item CDAT now displays iQuam SST quality monitoring point data files and
  computes the statistics between image and point data attributes.  Use
  by adding a shape overlay to an image and selecting an iQuam SST data file.

\end{itemize}

\hspace{0.4cm} {\bf File formats and I/O}

\begin{itemize}

  \item GeoTIFF, JPEG, GIF, PNG, and PDF rendered files have extra metadata tags
  that describe the software version and options used.

  \item New support for NetCDF 4 files in level 2 swath projection and
  non-geographic dimensions.

  \item NetCDF 4 files now have better support for grid mapped projections in
  the CF metadata.

  \item HDF is now updated to the HDF Java 3.2.1 version.

  \item Data file opening now correctly reports an out of memory issue if it
  occurs while identifying the file type.

  \item GeoTIFF output now supports UTM projection data.

\end{itemize}

\hspace{0.4cm} {\bf Command line tools}

\begin{itemize}

  \item Manual page for cwsample now correctly shows how to output to the
  terminal.

  \item Manual page for cwcomposite clarifies use of -{-}method option.

  \item The cwregister tool has two new options -{-}srcfilter and -{-}srcexpr
  to limit pixels used from the source data in registration.

  \item The cwrender tool now has a -{-}date option to override the plot legend
  date in cases where the file metadata is incorrect or unavailable.

  \item The cwstats tool now has a -{-}polygon option that computes statistics
  within a polygon boundary.

  \item The cwrender tool has a new -{-}scalewidth option to explicitly set the
  width of the color scale legend.  This is useful so that a series of plots
  match in overall width.

\end{itemize}

\subsection*{\bigicon{bug_yellow} Bug fixes}
\begin{itemize}

  \item Long text lines in plot legends are now wrapped.

  \item NetCDF 4 file writing now properly includes missing value attribute
  for variable data.

  \item NetCDF 4 float and double types now read with full precision formatting.

  \item NetCDF 4 files with 4D and 5D variables are read more reliably.

  \item GRIB files with variables names containing double underscores now read
  correctly.

  \item The cwregister tool performance is now greatly improved in some cases
  where source and destination data is chunked.

  \item Topographic and other lines are now drawn more reliably on plots in
  geographic projection.

  \item NetCDF 4 data is now correctly displayed in the case where a
  cylindrical projection is used with irregularly spaced latitude and longitude
  axes.

  \item The color scale legend in PDF output plots has an improved appearance
  in onscreen PDF readers.

  \item Open NetCDF files that are no longer needed are now properly closed.

  \item GeoTIFF ModelTransformationTag values have been updated to correct
  a 0.5 pixel error.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.3.1 -- January 2016}

\subsection*{\bigicon{box_software} Updates}

\hspace{0.4cm} {\bf Graphical tools}

\begin{itemize}

  \item Added ability in CDAT to save/recall window size since the last time
  the application was run.  Also added menu options to set window to various
  predefined sizes or a custom size.

  \item Added preference options in CDAT to allow the user to specify the
  maximum Java Virtual Machine heap size for dynamic memory allocation, and
  a cache size for data tiles read from HDF and NetCDF files.  This allows CDAT
  to better read files with large compressed data chunks, and users who need to
  have many files open at once to better manage their memory requirements.

  \item Bitmask overlays in CDAT now handle up to 32-bit integer mask values.
  This is much better for cloud mask testing than the original maximum value
  of 255.

  \item Updated latitude/longitude line labelling algorithm to handle full-disk
  projections such as orthographic and near-size perspective.  The new
  algorithm places line labels in the center of the image rather than at the
  edges.

  \item Added an experimental scripting console to CDAT that allows users to
  run their own custom code within CDAT using Java language syntax.  All the
  APIs documented in the CoastWatch Utilities are available.

\end{itemize}

\hspace{0.4cm} {\bf File formats and I/O}

\begin{itemize}

  \item Added NetCDF 4 file saving from cwexport and CDAT.  NetCDF 4 files are
  written with CF-1.4 metadata, and compressed in chunks.  This is an
  alternative to NetCDF 3 files which do not support compression.

  \item Improvements for reading ACSPO NetCDF and HDF format files, both
  polar orbiting and geostationary data.

  \item Added end of data capture to time period read from NOAA 1b format
  files.  Previously only start of data capture was read.

  \item Added support for reading data that is written from south to north
  and west to east.  Some data providers prefer this order, and data appeared
  upside-down in CDAT and other tools.

\end{itemize}

\hspace{0.4cm} {\bf Command line tools}

\begin{itemize}

  \item Added Unix man pages for all tools.

  \item Added identification of file reading module used to recognize a file
  format to the output of cwinfo.  Also improved output spacing when
  encountering long variable names.

  \item Improved the output of registration in cwregister when time-sequential
  swaths are being registered to the same master and then combined with
  cwcomposite.  Previously, single-pixel gaps existed between time-sequential
  swaths.

\end{itemize}

\subsection*{\bigicon{bug_yellow} Bug fixes}
\begin{itemize}

  \item Fixed issues with memory leaking when closing some file formats.  This
  was resulting in an ``out of heap space'' error message.

  \item Many internal documentation and unit testing updates.

  \item Fixed Java VM splash screen in graphical tools to reliably indicate
  loading delays.

  \item Fixed issue with Java VM crashing due to multiple threads accessing
  native HDF 4 and 5 libraries.

  \item Fixed error when performing a point survey.

  \item Fixed startup issue on some Windows machines when attempting to
  read user preferences file.

  \item Fixed numerical issues in registration when the source file contains
  data on either side of the -180/+180 longitude boundary.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.3.0 -- October 2013}

\subsection*{\bigicon{box_software} Updates}

\hspace{0.4cm} {\bf Graphical tools}

\begin{itemize}

  \item Added support for loading and saving of {\em profiles} in CDAT --
  groups of enhancements and overlays.

%%  \item Added clipboard support in CDAT for matching view scale parameters.

\end{itemize}

\hspace{0.4cm} {\bf File formats and I/O}

\begin{itemize}

  \item Updated file handling for Mac OS X 10.5+ operating system.

  \item Removed read support for the CoastWatch IMGMAP file format.

  \item Updated ACSPO HDF 4 reading for new VIIRS sensor and non-chunked
  compressed data files.

  \item Added ability to read ACSPO NetCDF 4 data files.

  \item Added NetCDF 3 with CF-1.4 metadata as an export data format in
  cwexport with (optional CW and DCS metadata).

  \item Added read support in all tools for data files in NetCDF 4 with CF-1.4
  variable and CW metadata.

  \item Updated to use the new Java HDF 2.9 interface with native 32- and
  64-bit HDF 4 and 5 libraries.

  \item Added read support in all tools for data files in NetCDF 4 with L2P
  metadata.

  \item Added support for memory caching when reading NetCDF 4 data files.

\end{itemize}

\hspace{0.4cm} {\bf Command line tools}

\begin{itemize}

  \item Added a print option to cwinfo for Common Data Model coordinate
  system information (if available).

  \item Added extra options to cwrender for: (i) rendering with custom color
  palettes specified by a file or directly on the command line, (ii) adding
  watermark text to the image, and (iii) manually specifying the data scale
  tick marks.

  \item Converted all GCTP coordinate transform code to Java to run on 64-bit
  Java VMs for all tools.

\end{itemize}

\subsection*{\bigicon{bug_yellow} Bug fixes}
\begin{itemize}

  \item Fixed the error message ``no parent window'' when opening data files.

  \item Fixed problem with reliably closing HDF 4 files.

  \item Corrected direction error in vector symbols (winds, currents, etc).

  \item Fixed non-functional State Plane Coordinate System support.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.2.3 -- March 2009}

\subsection*{\bigicon{box_software} Updates}

\begin{itemize}

  \item Added support for NOAA 1b KLMN data files with AMSU-A,
    AMSU-B, and MHS sensor data.

  \item Added informational ``Reading file information'' message
    when opening large files in CDAT.

  \item Updated to use the netCDF Java library 2.2.22 for
    improved GRIB 2 file support.

  \item Improved expression parsing in cwmath to allow for symbol
    characters in variable names, such as minus signs.

  \item Added geometric mean composite and explicit command line
    ordering options in cwcomposite tool.

  \item Added 64-bit IEEE floating point output option in
    cwangles tool.

  \item Created tool to automatically test command line tools and
    options (work in progress).

\end{itemize}

\subsection*{\bigicon{bug_yellow} Bug fixes}
\begin{itemize}

  \item Corrected problem with reading CoastWatch HDF swath
    geolocation data.  This was causing an error when displaying
    or working with CoastWatch HDF swath projection data files.

  \item Regenerated HDF land mask files for use with
    autonavigation.  The cwautonav tool was failing when
    encountering navigation points with latitude $>$ 45 degrees.

  \item Fixed problem with ACSPO HDF file buoy data variables
    being read and displayed in CDAT.

  \item Fixed problem with full orbit FRAC data files from Metop.
    Opening a full orbit file was resulting in a very long wait
    and CDAT becoming unresponsive.

  \item Fixed out of memory problems with opening and closing
    many large files in CDAT.

  \item Fixed unsupported file format error when reading TOVS
    data files with no archive header.

  \item Corrected ACSPO file I/O routines to read both orbit and
    granule metadata conventions.

  \item Corrected overflow error in cwdownload byte count for
    large file transfers.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.2.2 -- November 2007}

\subsection*{\bigicon{box_software} Updates}

\hspace{0.4cm} {\bf Graphical tools}

\begin{itemize}

  \item Improved visibility of shape drawing in CDAT during zoom and
  annotation operations.

  \item Added full screen data view mode in CDAT.

  \item Added navigation analysis panel in CDAT.

  \item Added data reference grid overlays for drawing lines at
  regular image row and column spacings.

  \item Added a warning dialog in CDAT when navigation correction is
  about to modify a data file.

  \item Improved file open/save functionality in the CoastWatch Master
  Tool (cwmaster).

\end{itemize}

\hspace{0.4cm} {\bf File formats and I/O}

\begin{itemize}

  \item Added support for reading NOAA/NESDIS AVHRR Clear-Sky
  Processor for Oceans (ACSPO) HDF data files.

  \item Modified ArcGIS binary grid header writer to include ``nbits''
  value.

  \item Added support for reading NOAA 1b High Resolution Infrared
  Radiation Sounder (HIRS) data from NOAA KLMNN' satellites.

  \item Modified CoastWatch HDF writing to handle writing explicit
  lat/lon values for earth location data.

  \item Modified netCDF file reading to handle data with greater than
  two dimensions as a set of 2D arrays.

  \item Added ``scan\_time'' variable to NOAA 1b file variables.

  \item Modified NOAA 1b file reading to read only the largest
  contiguous run of valid scan lines.

  \item Added support for reading erroneous NOAA-15 data files from
  CLASS that indicate the wrong file version in the header.

  \item Added checks for spheroid compatibility in GCTP map
  projections.

\end{itemize}

\hspace{0.4cm} {\bf Command line tools}

\begin{itemize}

  \item Added step sequential color palette for East Coast Node
  chlorophyll data.

  \item Added version printing option ``-{-}version'' to all command
  line tools.

  \item Added the ``-{-}copy'' option to cwimport so that entire
  variables can be copied from one file to another.

  \item Added median value computation results to the output of the
  cwstats command.

\end{itemize}

\subsection*{\bigicon{bug_yellow} Bug fixes}
\begin{itemize}

  \item Fixed problem with overlay groups not updating between CDAT
  tabs.

  \item Fixed problem with directory refresh on file open in CDAT.

  \item Fixed problems with box surveys in CDAT that were not
  correctly surveying very small boxes of pixels.

  \item Fixed some problems with earth location reverse lookup in full
  orbit swath datasets.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.2.1 -- November 2006}

\subsection*{Updates}
\begin{itemize}

  \item Updated GUI code for better Mac OS X integration.

  \item Added help buttons in some areas of CDAT to aid users in
  getting context-specific help.

  \item Added color scale legend beside data view in CDAT in
  response to user suggestions.

  \item Added warning message in CDAT before applying navigation
  to make sure user understands that the data file is being
  modified.

  \item Changed ``Save As'' in CDAT to ``Export'' to avoid
  confusion.  The data file should be thought of as read-only and
  the save formats as export formats.

  \item Changed the order of operations for exporting data in
  CDAT to simplify the number of steps users need to perform.

  \item Added continuous enhancement updates in CDAT for visual
  appeal.

  \item Updated icons for data view controls in CDAT.

  \item Added drag-and-drop support in CDAT for opening data
  files.

  \item Updated all dialog box buttons in CDAT to more closely
  match platform defaults.

  \item Factored code for earth transforms to allow for both
  native C and Java map projection implementations in the future.

  \item Added support in CDAT and cwrender for expression masking.

  \item Added support in CDAT for preferred units.

  \item Added support in CDAT and cwrender for saving image files
  with indexed 8-bit palettes.

  \item Added support in CDAT and cwrender for saving world
  files.

  \item Changed splash screen to not display by default for GUI
  tools.  This was causing users to think that startup was
  abnormally slow.

  \item Added support in NOAA 1b reading code for version 4 and 5
  file formats, 8-bit and 16-bit sensor word sizes, MetOp data
  files, and files with missing scan lines.

  \item Added support for user file formats via the extensions/
  directory.

  \item Added TIFF file compression in CDAT and cwrender.

  \item Added code for the Earth Data Access Client (EDAC) for
  for use by the CoastWatch East Coast Node (ECN).

  \item Added support in TeraScan HDF I/O code for importing a
  user-specified set of attributes.

  \item Updated GSHHS reading code to handle binned political
  line data, and replaced databases in TeraScan vector format
  with new HDF binned data from GMT.  This speeds up the access
  and rendering of state and international lines considerably.

  \item Enhanced color scale in cwrender and CDAT to correctly
  show log scale ticks above the highest power of ten on the
  scale.  This helps with chlorophyll plotting when users scale
  between non-power-of-ten minimum and maximum.

  \item Added CDAT and cwrender palettes for Coral Reef Watch
  data.

  \item Added the {-}-coherent option to cwcomposite based on
  CoastWatch central processing request.  See the manual page for
  details.

  \item Updated look and content of application help files for
  CDAT, cwmaster, and cwstatus to be easier to read and navigate.

  \item Added ubyte/ushort types, and xor/not functions to
  cwmath.

  \item Added the {-}-overwrite option to cwregister based on
  CoastWatch central processing request.  See the manual page for
  details.

  \item Added the ability in cwrender to accept multiple
  {-}-shape and {-}-bitmask options.  This makes rendering much
  more flexible.

  \item Added the {-}-variable option to cwsample.  It was
  confusing to users to have only {-}-match and not be able to
  depend on the ordering of columns in the output text file.

  \item Added the {-}-region option to cwstats that takes a
  center point and radius for sampling.

  \item Modified the base directory for user preferences to be
  operating system specific.  The base directory was causing
  problems because different operating systems expect software to
  place customization directories in different locations.  See
  the help files in CDAT for the new locations.

  \item Standardized on coastwatch.info@noaa.gov as the
  destination for all support emails.

\end{itemize}

\subsection*{Bug fixes}
\begin{itemize}

  \item Fixed error with log enhancement normalization by
  disabling the Normalize button for log enhancements.

  \item Fixed status dialog problem in CDAT when loading
  variables with long names from files with short names.

  \item Fixed color, stroke, and font swatch rendering in CDAT
  for Mac OS X.

  \item Fixed problem with writing ArcGIS files from CDAT and
  cwexport.  Header file accuracy was being impacted by writing
  to only two decimal places.

  \item Fixed problem when reading OPeNDAP files with 2D data of
  odd dimensions.

  \item Fixed error with retrieving chunks lengths while reading
  netCDF files, since netCDF has no chunking or compression
  support.

  \item Fixed null line color errors in CDAT overlays.

  \item Fixed problem with rendering text shadows for black grid
  lines in CDAT and cwrender.

  \item Fixed problem with lat/lon separator characters in
  cwautonav.  Now the documentation and implementation match.

  \item Fixed cwdownload to delete partial files when a transfer
  error occurs.

  \item Fixed the lack of equation description in log-enhanced
  GeoTIFF output from cwrender and CDAT.

  \item Fixed error when working with geographic projection data
  that crosses the date line.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.2.0 -- October 2005}

\subsection*{Updates}
\begin{itemize}

  \item Added RasterPixelIsPoint style earth location code for wind
  data.

  \item Improved speed of NOAA 1b reading by caching scan lines rather
  than tiles, as this reflects the actual file organization.

  \item Added support for OPeNDAP-accessible datasets with CoastWatch
  HDF metadata.

  \item Updated to perform datum shifting between Earth
  transforms of different datums.

  \item Changed ``datum'' terminology to ``spheroid'' in various
  locations.

  \item Added support for abstract GIS features to help in ESRI
  shapefile processing.

  \item Added spectrum and wind palettes for cwrender and CDAT.

  \item Added -{-}limits option in cwstats.

  \item Added check for incompatible overlay group files in CDAT.

  \item Added support in cwrender for overlay group rendering, world
  files, vector data rendering, and units conversion.

  \item Updated CDAT to have a special interface for opening OPeNDAP
  connections and datasets, moved file information to a full size
  window, and added 1:1 toolbar button.

  \item Added various detailed control options in cwautonav.

  \item Added hdatt tool for direct manipulation of HDF attribute
  information.

\end{itemize}

\subsection*{Bug fixes}
\begin{itemize}

  \item Corrected NOAA 1b longitude interpolation in polar regions.

  \item Modified to ignore coordinate variables in HDF files (for
  compliance with CF metadata conventions).

  \item Relaxed NOAA 1b format description check for varying
  descriptions in CLASS data files.

  \item Fixed unreliable convergence problem in swath earth location
  reverse lookup algorithm.

  \item Fixed dropouts between rectangles in mixed resampling method
  for cwregister.

  \item Fixed earth context element in output from cwrender to not
  draw coverage polygon when area is larger than orthographic
  projection area.

  \item Fixed problem with minimized window icons in graphical tools.

  \item Modified cwmaster so that map projections that support only
  sphere Earth models cannot be saved with an ellipsoid model.

  \item Modified the default locale for number formatting and printing
  to English/US to resolve problems with inconsistent parsing of
  numbers formatted in other countries.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.1.9 -- April 2005}

\subsection*{Updates}
\begin{itemize}

  \item Updated NOAA 1b AVHRR reading for version 3 format.

  \item Added support in metadata and CW HDF reading/writing for
  sensor scan geometry geostationary satellite data.

  \item Added LZW compressed GIF output for CDAT and cwrender.

  \item Added mixed resampling method to cwregister for handling
  discontinuities in the source data, such as in MODIS sensor data.

  \item Added cwautonav tool for estimating navigational corrections
  using image data.

  \item Added transparent overlay color rendering in CDAT and
  cwrender, specifically for overlaying user-specified polygon data
  without obscuring the background image.

  \item Modified graphical tools to output error messages that would
  normally go to the terminal to a dialog. Now users will be able to
  see ``uncaught'' exceptions and decide to ignore them or file a bug
  report.

  \item Added standard palettes specific to chlorophyll data.

  \item Added basic ESRI shapefile rendering support in CDAT and
  cwrender.

  \item Reformatted all tool manual pages and usage notes for clarity,
  as well as adding the equivalent one-letter options for all
  word-length options.

  \item Added general settings section in CDAT user preferences,
  initially for lat/lon format preferences.

  \item Modified all tools to clean up partially written data files
  after unexpected errors have occurred.

  \item Modified cwexport and cwrender to detect the desired file
  format based on the output file extension.

  \item Added -{-}nostates (don't plot state border, just international
  borders) and -{-}logo (plot a user-specified logo) options to
  cwrender.

  \item Added -{-}imagecoords (print image row and column coordinates)
  to cwsample.

  \item Added log scale enhancements to CDAT.

  \item Updated graphical tool icons, menus, help pages, and Unix
  look-and-feel.

  \item Modified drop shadow rendering in CDAT and cwrender for better
  text readability.

  \item Added -{-}projection option to cwdownload to allow the user to
  download only mapped or swath data files.

\end{itemize}

\subsection*{Bug fixes}
\begin{itemize}

  \item Fixed overflow problem when writing HDF attribute data beyond
  65535 values long.

  \item Fixed registration problem with navigationally corrected data.

  \item Fixed inappropriate missing value problem in ESRI ArcGIS grid
  and raw float output.

  \item Fixed ``almost equals'' problem with map projection parameter
  comparisons.

  \item Fixed background fill problem in CDAT data view when
  performing navigation.

  \item Fixed CDAT image saving bug; data view changed or became
  unusable after saving.

  \item Fixed problem with CDAT leaving files open even when user has
  closed file.

  \item Fixed PDF page size problem.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.1.8 -- November 2004}

\subsection*{Updates}
\begin{itemize}

  \item Extended data caching in I/O routines to handle arbitrary size
  data arrays. Previously, some utilities would memory-thrash when
  faced with a large column count.

  \item Renamed various SatelliteXXX classes to EarthXXX to mirror
  more generality in metadata.

  \item Updated I/O for new metadata specifications, including
  multiple time periods and composite attributes.

  \item Modified the default metadata version to 3.2. Now by default,
  new files created with the utilities are no longer compatible with
  the older CDAT version 0.7a and earlier.

  \item Updated coastline data files to GSHHS v1.3 and corrected known
  polygon fill problems on the US East Coast, Africa, and South
  America.

  \item Updated ETOPO5 topography database and corrected problems with
  contours fills producing strange bullseye artifacts.

  \item Added a -{-}timeout option to cwdownload to allow the user to
  select a network timeout value.

  \item Added a -{-}transform option to cwinfo to print earth transform
  information.

  \item Modified the behaviour of cwcomposite to append dataset
  metadata together rather than simply use the last file's global
  metadata (time, satellite, etc). The -{-}pedantic option was also
  added to allow exact tracking of source dataset metadata.

  \item Added a -{-}inputs option to cwcomposite to allow the user to
  specify a list of files in a text file rather than on the command
  line.

  \item Recompiled the HDF library for Linux to allow up to 256 open
  files. This allows the cwcomposite to handle more than 31 input
  datasets which was the previous limit.

  \item Modified cwmath to allow multiple input files, and output to
  an existing file that is not an input file.

  \item Updated to new install4j installation package wizard to fix
  various bugs and allow the user to select components during a
  graphical installation.

  \item Added various option to cwcoverage tool for plotting ground
  station coverage circles.

\end{itemize}

\subsection*{Bug fixes}
\begin{itemize}

  \item Fixed stall problem in cwdownload when data server is
  unavailable or not responding within a certain timeout period.

  \item Fixed spelling problems with GCTP sinusoidal projection.

  \item Fixed swath reverse-lookup problems for non-AVHRR data.

  \item Fixed registration problems with partially swath-covered
  partitions in the output dataset.

  \item Fixed bitmask overlay navigation problem in CDAT.

  \item Fixed font problems in overlay group loading in CDAT on MacOS
  X.

  \item Fixed small polygons bug in CDAT coastline overlay.

  \item Fixed legend bounding rectangle line style problems in output
  from CDAT and cwrender.

  \item Fixed bitmask overlay rendering problems in CDAT on MacOS X.

  \item Fixed step color scale problems in image file output from
  CDAT.

  \item Fixed printing problems in cwinfo and cwstats.

  \item Fixed CDAT data view size change when many files are opened.

  \item Fixed CDAT data view so that if multiple file tabs are open
  and the user switches tabs, the data view does not continue to
  render to the wrong tab.

  \item Fixed CDAT problem with allowing multiple overlay property
  control dialogs.

  \item Fixed CDAT problem with contour level deletion causing a
  stall.

  \item Fixed stall problems in CDAT related to delayed rendering.

  \item Fixed stall problems in cwstatus when server is not
  responding.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.1.5 -- September 2003}

\begin{itemize}

  \item Extended GeoTIFF output in cwrender to generate a paletted
  file when no overlays are used, and such that the ImageDescription
  TIFF tag contains a mapping equation from palette index to data
  value.

  \item Corrected cwimport so that the ``pass\_type'' attribute is
  correctly written when the metadata version is $<$ 3.

  \item Corrected the text output from cwexport to write ``NaN'' for
  invalid values.

  \item Corrected a 0.5 pixel offset problem in image overlay
  rendering.

  \item Added land polygon filling algorithms for cwmaster (by
  default) and cwrender (by using -{-}coast).

  \item Added -{-}operator option in cwstatus for verbose operator
  messages.

  \item Added bitwise or/and functions in cwmath.

  \item Added new ``cwgraphics'' tool to generate standard CoastWatch
  graphics overlays.

  \item Modified cwdownload to more gracefully handle connection
  errors and network timeouts.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.1.6 -- December 2003}

\begin{itemize}

  \item Fixed space in resource path problem in Windows.

  \item Added support for AIX and IRIX.

  \item Added a resize bar for cwstatus between the online data list
  and data coverage / data preview panels.

  \item Added the cwcoverage tool for showing region coverage plots
  (need to add ground station coverage circle feature).

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.1.7 -- June 2004}

\begin{itemize}

  \item Updated TeraScan HDF import for equirectangular projections
  and spheroid detection.

  \item Changed EarthVectorReader to EarthVectorSource.

  \item Moved file path creation to IOServices.

  \item Created ContourGenerator and TopographyOverlay classes and
  added contouring to cwrender.

  \item Changed command line tools to split multi-parameter options on
  regular expression, including ',' and '/'.

  \item Added splash screen for cwmaster and cwstatus.

  \item Added support in CWHDFReader for explicit lat/lon data rather
  than polynomial coefficients.

  \item Changed use of Vector in many classes to ArrayList for better
  performance.

  \item Added support for unsigned HDF and CWF variable data.

  \item Modified data color scale in cwrender for better log scale
  behaviour.

  \item Modified cwmaster and cwstatus batch files to run with the
  Windows look and feel.

  \item Fixed automatic center calculation problem in cwcoverage.

  \item Fixed rounding problem in EarthDataViewPanel.TrackBar.

  \item Added build file for ant.

  \item Now using the Java install4j wizard to create
  installation packages.

  \item Re-coded and extended the CoastWatch Data Analysis Tool to
  work with the Java API. In addition to its 0.7a version, CDAT now
  has annotation and navigation capabilities, online help, GeoTIFF
  output, topography overlays, generic bitmask overlays, overlay
  groups, support for swath files, and more. CDAT is now an integrated
  part of the package.

  \item Modified the cwstatus menus to allow users to connect to a
  different server.

  \item Removed the cwrender preview option -- it was causing problems
  with headless operations.

  \item Updated online documentation in cwstatus and cwmaster.

  \item Replaced palette and RGB database files with XML versions.

  \item Added the -{-}template option to cwmath so that users may use an
  existing variable as a template for the new variable rather than
  having to specify all of its properties.

  \item Added an update agent to graphical tools that informs the user
  if a software update is available.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.1.4 -- May 2003}

\begin{itemize}

  \item Added two new tools: cwmath and cwcomposite.

  \item Added MacOS X support in the dynamic JNI libraries and wrapper
  script.

  \item Fixed dateline crossing navigation problems in NOAA 1b readers
  -- still needs refinement for near-polar areas.

  \item Added basic GSHHS polygon rendering code to BinnedGSHHSReader
  -- still needs refinement for bin boundaries and polygons broken by
  projection distortion.

  \item Added support for rendering progress to EarthDataView in
  preparation for CDAT operations.

  \item Added GLERL palettes ``GLERL-Archive'' and
  ``GLERL-30-Degrees'' palettes to the rendering tool and ``NDVI''
  palette.

  \item Added ``-{-}age'' option to download tool for specifying the
  desired maximum age of the data in hours.

  \item Added file chooser filters for ``.hdf'' and ``.cwf'' files in
  the cwmaster tool for easier use.

  \item Added 3D logos to rendering output.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.1.3 -- March 2003}

\begin{itemize}

  \item Added new tool for server status monitoring.

  \item Optimized download and status tools for database usage and
  updated command line options.

  \item Added GeoTIFF output for mapped projection data to cwrender.

  \item Added NOAA 1b GAC/LAC AVHRR input.

  \item Fixed various bugs and made performance improvements.

  \item Updated Unix startup script for headless operations.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.1.2 -- December 2002}

\begin{itemize}

  \item Optimized coordinate translation code, rendering now runs 20\%
  faster.

  \item Modified rendering normalization for viewable data only.

  \item Added grid overlay label drop shadows for better label
  legibility.

  \item Removed miter problems in shape drawings and coast lines.

  \item Added gridded dataset tile read/write caching for improved
  memory performance.

  \item Added NDVI palette.

  \item Corrected bitmask rendering for PDF files.

  \item Added registration tool for mapping between projections.

  \item Added generic bitmask rendering.

  \item Added navigation, master, sampling tools.

  \item Modified download tool command line parameters for regular
  expression matching.

  \item Added angle calculation tool.

  \item Improved coastline selection and rendering performance using
  binned GMT HDF dataset.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.1.1 -- October 2002}

\begin{itemize}

  \item Added rendering.

  \item Compiled shared libraries for Windows and Solaris.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 3.1.0 -- July 2002}

\begin{itemize}

  \item Implemented in Java using Java native interface to CWF and
  GCTP code.

  \item Now uses HDF4 via the HDF JNI calls.

  \item Now supports swath data.

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 2.4 -- June 2001 (internal release)}

\begin{itemize}

  \item Changed Makefile to include cwproj.c in libcwf.a

  \item Created cwflmaskdb routine

  \item cwproj.c: Modified for linear lat/lon header errors

  \item Fixed hdfinfo and cwftohdf usage messages

  \item cwf.c: Added orbit\_type ``both'' and channel\_number
  ``sst\_multi''

  \item cwftohdf.c: Added orbit\_type ``both'' and channel\_number
  ``sst\_multi''

  \item cwf.c: Added flat file support, reading only

  \item Moved cwftohdf to cwftocwhdf

  \item Moved hdfinfo to cwhdfinfo

  \item Fixed CWclone bug in hcwf library

  \item Added Julian day printing to cwhdfinfo

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 2.3 -- October 1999}

\begin{itemize}

  \item cwfcomp.c:\\
   Added -b option to allow badval specification\\
   Changed output file date to match last file

  \item cwf.c:\\
   Added f to various float constants\\
   Added test for near-zero IR values\\
   Simplified round function\\
   Fixed bug in cw\_compress for files with cols $<$ 512\\
   Added calibration guess for older WCRN files

  \item cwfnav.c:\\
   Fixed usage message

  \item cwftogif.c cwftohdf.c cwftonc.c cwftoraw.c cwfval.c cwproj.c:\\
   Simplified round function

  \item cwproj.c:\\
   Added corrections for WCRN's linear files

  \item cwftogif.c: \\
  Modified graphics plane layering, reformatted and commented\\
  Added ramsdis color palette for CH4 IR

  \item cwftohdf.c: Completely rewritten

  \item Created new HDF information routine: hdfinfo

  \item Created new land masking routine, cwflmask

  \item Updated Makefile for new HDF and netCDF releases

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 2.2 -- January 1999}

\begin{itemize}

  \item cwf.c:\\
  Fixed file close bug in decompression routine\\
  Added more NOAA satellite codes (NOAA-15, -16, -17)

  \item Created composite program, cwfcomp

  \item cwftoarc.c:\\
  Corrected lower-left pixel position and cell size\\
  Added binary output option\\
  Added polar projection conversion\\
  Added projection specifications note

  \item cwftogif.c:\\
  Changed IR default min\\
  Changed brightness temperature legend

  \item cwproj.c:\\
  Modified polar projection calculation for Alaska file bugs\\

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 2 -- September 1998 (first public release)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW VERSION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Version 1 -- October 1997 (internal release)}

max_stars_repo_name: phollemans/cwutils

max_issues_repo_name: phollemans/cwutils

max_forks_repo_name: phollemans/cwutils


text: \subsection{Experience replay and catastrophic interference}

max_stars_repo_name: adamdboult/nodeHomePage

max_issues_repo_name: adamdboult/nodeHomePage

max_forks_repo_name: adamdboult/nodeHomePage


text:
\subsection{Text Viewer}
\screenshot{plugins/images/ss-text_viewer-main}{Text Viewer}{img:text_viewer-main}
This is a Viewer for text files with word wrap. Just open a \fname{.txt} or
\fname{.nfo} file to display it. The text viewer features controls to handle
various styles of text formatting and has top{}-of{}-file and bottom{}-of{}-file
buttons. You can view files without a \fname{.txt} or \fname{.nfo} extension
by using \emph{Open with} from the \emph{Context Menu}
(see \reference{ref:Contextmenu}). You can also bookmark pages.

\subsubsection{Default keys}
\begin{btnmap}
    \opt{PLAYER_PAD}{\ButtonLeft}
    \opt{RECORDER_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD%
        ,SANSA_E200_PAD,SANSA_FUZE_PAD,GIGABEAT_PAD,MROBE100_PAD,SANSA_FUZEPLUS_PAD%
        ,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonUp}
    \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonScrollBack}
    \opt{IRIVER_H10_PAD,MPIO_HD300_PAD}{\ButtonScrollUp}
    \opt{SANSA_C200_PAD,SANSA_CLIP_PAD}{\ButtonVolUp}
    \opt{GIGABEAT_S_PAD}{\ButtonPrev}
    \opt{COWON_D2_PAD}{\ButtonMinus{} / }%
    \opt{touchscreen}{\TouchTopMiddle}
    \opt{PBELL_VIBE500_PAD}{\ButtonOK}
    \opt{MPIO_HD200_PAD}{\ButtonRew}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCUp}
    }
        & Scroll{}-up\\

    \opt{PLAYER_PAD}{\ButtonRight}
    \opt{RECORDER_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IAUDIO_X5_PAD%
        ,SANSA_E200_PAD,SANSA_FUZE_PAD,GIGABEAT_PAD,MROBE100_PAD,SANSA_FUZEPLUS_PAD%
        ,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonDown}
    \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonScrollFwd}
    \opt{IRIVER_H10_PAD,MPIO_HD300_PAD}{\ButtonScrollDown}
    \opt{SANSA_C200_PAD,SANSA_CLIP_PAD}{\ButtonVolDown}
    \opt{GIGABEAT_S_PAD}{\ButtonNext}
    \opt{COWON_D2_PAD}{\ButtonPlus{} / }%
    \opt{touchscreen}{\TouchBottomMiddle}
    \opt{PBELL_VIBE500_PAD}{\ButtonCancel}
    \opt{MPIO_HD200_PAD}{\ButtonFF}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCDown}
    }
        & Scroll{}-down\\

    \opt{PLAYER_PAD}{\ButtonMenu+\ButtonLeft}
    \opt{GIGABEAT_S_PAD}{\ButtonPlay+\ButtonLeft}
    \opt{MPIO_HD200_PAD}{\ButtonVolDown}
    \opt{MPIO_HD300_PAD}{\ButtonRew}
    \opt{touchscreen}{\TouchMidLeft}
    \nopt{PLAYER_PAD,GIGABEAT_S_PAD,touchscreen,IAUDIO_M3_PAD,MPIO_HD200_PAD%
         ,MPIO_HD300_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonLeft}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCLeft}
    }
        & Top of file (Narrow mode) /
        One screen left (Wide mode)\\

    \opt{PLAYER_PAD}{\ButtonMenu+\ButtonRight}
    \opt{GIGABEAT_S_PAD}{\ButtonPlay+\ButtonRight}
    \opt{MPIO_HD200_PAD}{\ButtonVolUp}
    \opt{MPIO_HD300_PAD}{\ButtonFF}
    \opt{touchscreen}{\TouchMidRight}
    \nopt{PLAYER_PAD,GIGABEAT_S_PAD,touchscreen,IAUDIO_M3_PAD,MPIO_HD200_PAD%
         ,MPIO_HD300_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonRight}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCRight}
    }
        & Bottom of file (Narrow mode) /
        One screen right (Wide mode)\\

    \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,SANSA_E200_PAD%
        ,SANSA_FUZE_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,GIGABEAT_S_PAD%
        ,GIGABEAT_PAD,PBELL_VIBE500_PAD,SANSA_FUZEPLUS_PAD,SAMSUNG_YH92X_PAD%
        ,SAMSUNG_YH820_PAD}{%
        \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonUp}
        \opt{SANSA_E200_PAD,SANSA_FUZE_PAD}{\ButtonScrollBack}
        \opt{SANSA_C200_PAD,SANSA_CLIP_PAD,GIGABEAT_S_PAD,PBELL_VIBE500_PAD}{\ButtonUp}
        \opt{GIGABEAT_PAD}{\ButtonA+\ButtonUp}
        \opt{SANSA_FUZEPLUS_PAD}{\ButtonVolUp}
        \opt{SAMSUNG_YH92X_PAD}{\ButtonFF+\ButtonUp}
        \opt{SAMSUNG_YH820_PAD}{\ButtonRec+\ButtonUp}
    \opt{HAVEREMOTEKEYMAP}{& }
        & One line up\\
    }

    \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,SANSA_E200_PAD%
        ,SANSA_FUZE_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,GIGABEAT_S_PAD%
        ,GIGABEAT_PAD,PBELL_VIBE500_PAD,SANSA_FUZEPLUS_PAD,SAMSUNG_YH92X_PAD%
        ,SAMSUNG_YH820_PAD}{%
        \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonDown}
        \opt{SANSA_E200_PAD,SANSA_FUZE_PAD}{\ButtonScrollFwd}
        \opt{SANSA_C200_PAD,SANSA_CLIP_PAD,GIGABEAT_S_PAD,PBELL_VIBE500_PAD}{\ButtonDown}
        \opt{GIGABEAT_PAD}{\ButtonA+\ButtonDown}
        \opt{SANSA_FUZEPLUS_PAD}{\ButtonVolDown}
        \opt{SAMSUNG_YH92X_PAD}{\ButtonFF+\ButtonDown}
        \opt{SAMSUNG_YH820_PAD}{\ButtonRec+\ButtonDown}
    \opt{HAVEREMOTEKEYMAP}{& }
        & One line down\\
    }

    \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,GIGABEAT_PAD,%
        GIGABEAT_S_PAD,SANSA_FUZEPLUS_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{
        \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonLeft}
        \opt{GIGABEAT_S_PAD}{\ButtonLeft}
        \opt{GIGABEAT_PAD}{\ButtonA+\ButtonLeft}
        \opt{SANSA_FUZEPLUS_PAD}{\ButtonBottomLeft}
        \opt{SAMSUNG_YH92X_PAD}{\ButtonFF+\ButtonLeft}
        \opt{SAMSUNG_YH820_PAD}{\ButtonRec+\ButtonLeft}
    \opt{HAVEREMOTEKEYMAP}{& }
        & One column left\\
    }

    \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,GIGABEAT_PAD,%
        GIGABEAT_S_PAD,SANSA_FUZEPLUS_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{
        \opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonRight}
        \opt{GIGABEAT_S_PAD}{\ButtonRight}
        \opt{GIGABEAT_PAD}{\ButtonA+\ButtonRight}
        \opt{SANSA_FUZEPLUS_PAD}{\ButtonBottomRight}
        \opt{SAMSUNG_YH92X_PAD}{\ButtonFF+\ButtonRight}
        \opt{SAMSUNG_YH820_PAD}{\ButtonRec+\ButtonRight}
    \opt{HAVEREMOTEKEYMAP}{& }
        & One column right\\
    }

    \opt{RECORDER_PAD,PLAYER_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IAUDIO_X5_PAD%
        ,IRIVER_H10_PAD,GIGABEAT_S_PAD,PBELL_VIBE500_PAD%
        ,MPIO_HD200_PAD,MPIO_HD300_PAD,SANSA_FUZEPLUS_PAD}{\ButtonPlay}
    \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonSelect}
    \opt{ONDIO_PAD}{\ButtonMenu}
    \opt{GIGABEAT_PAD}{\ButtonA}
    \opt{SANSA_C200_PAD,SANSA_E200_PAD}{\ButtonRec}
    \opt{SANSA_CLIP_PAD}{\ButtonHome}
    \opt{SANSA_FUZE_PAD}{\ButtonDown+\ButtonSelect}
    \opt{MROBE100_PAD}{\ButtonDisplay}
    \opt{SAMSUNG_YH820_PAD}{\ButtonFF}
    \opt{SAMSUNG_YH92X_PAD}{\ButtonRecOn{} or \ButtonRecOff}
    \opt{MPIO_HD200_PAD}{FIXME}
    \opt{touchscreen}{\TouchCenter}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCMode}
    }
        & Toggle autoscroll\\

    \opt{PLAYER_PAD}{\ButtonOn}
    \opt{RECORDER_PAD}{\ButtonFTwo}
    \opt{ONDIO_PAD}{\ButtonMenu+\ButtonOff}
    \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonSelect}
    \opt{IPOD_4G_PAD,IPOD_3G_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,MROBE100_PAD}{\ButtonSelect}
    \opt{IRIVER_H10_PAD}{\ButtonFF}
    \opt{IAUDIO_X5_PAD}{\ButtonRec}
    \opt{SANSA_FUZEPLUS_PAD}{Long \ButtonSelect}
    \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD}{\ButtonDown+\ButtonSelect}
    \opt{COWON_D2_PAD}{\ButtonMenu+\ButtonPlus}
    \opt{SANSA_FUZE_PAD}{\ButtonUp+\ButtonSelect}
    \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonPlay}
    \opt{PBELL_VIBE500_PAD}{\ButtonPower}
    \opt{MPIO_HD200_PAD}{\ButtonRec}
    \opt{MPIO_HD300_PAD}{\ButtonEnter}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCPlay+\ButtonRCMode}
    }
        & Set/Reset bookmarks\\

    \opt{RECORDER_PAD}{\ButtonFOne}
    \opt{ONDIO_PAD}{Long \ButtonMenu}
    \opt{PLAYER_PAD,IPOD_4G_PAD,IPOD_3G_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD%
        ,MROBE100_PAD,PBELL_VIBE500_PAD,MPIO_HD300_PAD}{\ButtonMenu}
    \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonMode}
    \opt{IAUDIO_X5_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,SANSA_E200_PAD}{\ButtonSelect}
    \opt{SANSA_FUZE_PAD}{Long \ButtonSelect}
    \opt{SANSA_FUZEPLUS_PAD}{\ButtonBack}
    \opt{IRIVER_H10_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonRew}
    \opt{COWON_D2_PAD}{\ButtonMenu{} / }%
    \opt{MPIO_HD200_PAD}{\ButtonFunc}
    \opt{touchscreen}{\TouchTopRight}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCPlay}
    }
        & Enter menu\\

    \opt{PLAYER_PAD}{\ButtonStop}
    \opt{RECORDER_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff}
    \opt{IPOD_4G_PAD,IPOD_3G_PAD}{\ButtonSelect+\ButtonMenu}
    \opt{IAUDIO_X5_PAD,IRIVER_H10_PAD,SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD%
        ,GIGABEAT_PAD,MROBE100_PAD,SANSA_FUZEPLUS_PAD}{\ButtonPower}
    \opt{SANSA_FUZE_PAD}{Long \ButtonHome}
    \opt{GIGABEAT_S_PAD}{\ButtonBack}
    \opt{COWON_D2_PAD}{\ButtonPower{} / }%
    \opt{touchscreen}{\TouchTopLeft}
    \opt{IAUDIO_M3_PAD,PBELL_VIBE500_PAD}{\ButtonRec}
    \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{Long \ButtonRew}
    \opt{MPIO_HD200_PAD}{\ButtonRec + \ButtonPlay}
    \opt{MPIO_HD300_PAD}{Long \ButtonMenu}
    \opt{HAVEREMOTEKEYMAP}{&
        \opt{IAUDIO_M3_PAD}{\ButtonRCRec}
        \opt{IRIVER_RC_H100_PAD}{\ButtonRCStop}
    }
        & Exit text viewer\\

\end{btnmap}

\subsubsection{Menu}

\begin{description}
\item[Return] Return to the file being viewed.
\item[Viewer Options] Change settings for the current file.
    \begin{description}
    \item[Encoding] Set the codepage in the text viewer.
% ToDo: wrap some of the following settings into a \opt{lcd_bitmap} to exlude
% ones that don't work on charcell - as soon as the plugin itself does
    Available settings:
    \setting{ISO-8859-1} (Latin 1).
    \setting{ISO-8859-7} (Greek),
    \opt{lcd_bitmap}{
        \setting{ISO-8859-8} (Hebrew),
    }
    \setting{CP1251} (Cyrillic),
    \opt{lcd_bitmap}{
        \setting{ISO-8859-11} (Thai),
        \setting{CP1256} (Arabic),
    }
    \setting{ISO-8859-9} (Turkish),
    \setting{ISO-8859-2} (Latin Extended),
    \setting{CP1250} (Central European),
    \opt{lcd_bitmap}{
        \setting{SJIS} (Japanese),
        \setting{GB-2312} (Simple Chinese),
        \setting{KSX-1001} (Korean),
        \setting{BIG5} (Traditional Chinese),
    }
    \setting{UTF-8} (Unicode),
    This setting only applies to the plugin and is independent from the
    \setting{Default Codepage} setting (see \reference{ref:Defaultcodepage}).
    \item[Word Wrap] Toggle word wrap mode.
        \begin{description}
            \item[On] Break lines at the maximum column limit.
            \item[Off (Chop Words)] Break lines at white space or hyphen.
        \end{description}
    \item[Line Mode] Change how lines are displayed.
        \begin{description}
            \item[Normal] Break lines at newline characters.
            \item[Join] Join lines together.
            \item[Expand] Add a blank line at newlines. Useful for making paragraphs
            clearer in some book style text files.
            \opt{lcd_bitmap}{
            \item[Reflow Lines] Justify the text.
            }
        \end{description}
    \item[Screens Per Page] Set the number of screens per page. Available
      options are \setting{1} to \setting{5} screens per page.
    \item[Alignment] Set the text alignment.
        \begin{description}
            \item[Right] Set the text alignment to the right.
            (Useful for displaying right-to-left languages, such as Arabic or Hebrew)
            \item[Left] Set the text alignment to the left.
        \end{description}
    \opt{lcd_bitmap}{
    \item[Show Header] Select whether to show the header. The header displays the file path.
        \begin{description}
            \item[No] Do not display the header.
            \item[Yes] Display the header.
        \end{description}
    \item[Show Footer] Select whether to show the footer. The footer dispays the page number.
        \begin{description}
            \item[No] Do not display the footer.
            \item[Yes] Display the footer.
        \end{description}

    \item[Font] Select the font to be used by the Text Viewer.
    \item[Show Statusbar] Select whether to show the status bar. If you select
         a theme settings that the status bar does not display (see
         \reference{ref:configure_rockbox_themes}), the status bar is not
         displayed even if you select \setting{Yes}.
        \begin{description}
            \item[No] Do not display the status bar.
            \item[Yes] Display the status bar.
        \end{description}
    }
    \item[Scroll Settings] The scrolling settings submenu.
        \begin{description}
            \item[Horizontal] Submenu for horizontal scrolling settings.
                \begin{description}
                    \item[Scrollbar] Toggle the horizontal scrollbar for the
                    current mode. If the file fits on one screen, there is no
                    scrollbar and this setting has no effect.
                        \begin{description}
                            \item[No] Do not display the horizontal scroll bar.
                            \item[Yes] Display the horizontal scroll bar.
                        \end{description}
                    \item[Scroll Mode] Change the function of the ``Left'' and
    ``Right'' buttons.
                        \begin{description}
                            \item[Scroll by Screen] Move to the previous/next
                            screen.
                            \item[Scroll by Column] Move to the previous/next
                            column.
                        \end{description}
                \end{description}
            \item[Vertical] Submenu for vertical scrolling settings.
                \begin{description}
                    \item[Scrollbar] Toggle the vertical scrollbar for the
                    current mode. If the file fits on one screen, there is no
                    scrollbar and this setting has no effect.
                        \begin{description}
                            \item[No] Do not display the vertical scroll bar.
                            \item[Yes] Display the vertical scroll bar.
                        \end{description}
                    \item[Scroll Mode] Change the function of the ``Scroll-up''
                    and ``Scroll-down'' buttons.
                        \begin{description}
                            \item[Scroll by Page] Scroll up or down one full screen.
                            \item[Scroll by Line] Scroll up or down one line.
                        \end{description}
                    \opt{lcd_bitmap}{
                    \item[Overlap Pages] Set whether the last line from the
                    previous screen is retained when scrolling pages.
                        \begin{description}
                           \item[No] Do not retain previous line.
                           \item[Yes] Retain previous line.
                        \end{description}
                    }
                    \item[Auto-scroll Speed] Control the speed of auto-scrolling
                    in number of lines per second.  Available options are
                    \setting{1} to \setting{10} lines per second. As an example,
                    \setting{4} will scroll the text at four lines per second.
                    \item[Left/Right Key (Narrow mode)] Change the function of
                    the ``Left'' and ``Right'' buttons when the screen is in
                    narrow mode (i.e. one screen per page).
                    \begin{description}
                        \item[Previous/Next Page] Scroll up or down one full screen.
                        \item[Top/Bottom Page] Move to the top or bottom page.
                    \end{description}
                \end{description}
        \end{description}
    \item[Indent Spaces] Set the number of spaces to indent the text when line
      mode is set to \setting{Reflow Lines}. Available options are \setting{0}
      to \setting{5} spaces. If you select \setting{0}, a blank line is
      displayed as an indent.
    \end{description}

\item[Show Playback Menu] Display the playback menu to allow control of the
currently playing music without leaving the plugin.

\item[Select Bookmark] Select a saved bookmark. In the screenshot below, the
``*'' denotes the current page.

\screenshot{plugins/images/ss-text_viewer-sel_bk_menu}{The select bookmark menu}{img:text_viewer-sel_bk}

\item[Global Settings] Set the default settings for the text viewer.
The setting items are the same as \setting{Viewer Options}. The global
settings are stored in
\fname{.rockbox/rocks/viewers/viewer.dat}.

\item[Quit] Exits the plugin. The text viewer automatically
stores its settings, the current position and bookmarks in
\fname{.rockbox/rocks/viewers/viewer\_file.dat}.
\end{description}

\subsubsection{Bookmarks}
    To add a bookmark, press
    \opt{PLAYER_PAD}{\ButtonOn}\opt{RECORDER_PAD}{\ButtonFTwo}%
    \opt{ONDIO_PAD}{\ButtonMenu+\ButtonOff}%
    \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn+\ButtonSelect}%
    \opt{IPOD_4G_PAD,IPOD_3G_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,MROBE100_PAD}{\ButtonSelect}%
    \opt{IRIVER_H10_PAD}{\ButtonFF}\opt{IAUDIO_X5_PAD}{\ButtonRec}%
    \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD}{\ButtonDown+\ButtonSelect}%
    \opt{COWON_D2_PAD}{\ButtonMenu+\ButtonPlus}%
    \opt{SANSA_FUZE_PAD}{\ButtonUp+\ButtonSelect}%
    \opt{IAUDIO_M3_PAD}{\ButtonRCPlay+\ButtonRCMode}.
    \opt{MPIO_HD200_PAD}{FIXME}
    The bookmark will be displayed as shown below. To delete the bookmark
    press the same button again.

\screenshot{plugins/images/ss-text_viewer-bookmark}{A bookmark}{img:text_viewer-bookmark}

max_stars_repo_name: Rockbox-Chinese-Community/Rockbox-RCC

max_issues_repo_name: Rockbox-Chinese-Community/Rockbox-RCC

max_forks_repo_name: Rockbox-Chinese-Community/Rockbox-RCC