
% Chrysalide - Outil d'analyse de fichiers binaires
% chrysalide-refcard.tex - concise carte de référence pour Chrysalide
%
% Copyright (C) 2015 Cyrille Bagard
%
%  This file is part of Chrysalide.
%
%  OpenIDA 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 3 of the License, or
%  (at your option) any later version.
%
%  OpenIDA 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 program; if not, write to the Free Software
%  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
%


\documentclass[landscape]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a3paper, top=3cm, bottom=3cm, left=3cm, right=3cm]{geometry}

\usepackage{multicol}
\usepackage{url}
\usepackage{scrextend}
\usepackage{xcolor}


% Le code suivant permet de récupérer la police utilisée par les sections.
%
% Cf. http://tex.stackexchange.com/questions/73158/how-to-get-the-size-of-the-section-header

\newcommand{\getsectionfont}{\setbox0=\vbox{\section*{a\xdef\TheSectionFont{\the\font}}}}
\AtBeginDocument{\getsectionfont}


% Pas de numérotation de page
\pagestyle{empty}


\begin{document}

\title{Chrysalide --- Quick Reference Card}


% Les commandes suivantes permettent de mesure une zone de texte, en particulier une pseudo secton donc.
%
% Cf. https://en.wikibooks.org/wiki/LaTeX/Lengths#Examples

\newlength{\sectionheight}
\newsavebox{\hiddensection}
\savebox{\hiddensection}{\TheSectionFont
  ABC
}
\settoheight{\sectionheight}{ \usebox{\hiddensection} }

% On recrée une section artificielle. Elle n'apparaîtra pas dans un sommaire
% (qui n'existera de toute façon jamais), mais comporte des bordures plus minces
% que celles par défaut pour une section.

\newcommand{\fakesection}[1]{
  \vskip 1em
  \noindent
  \colorbox{black!70}{\parbox[c][1.6\sectionheight]{1.0\linewidth}{
      \begin{addmargin}[1em]{1em}\TheSectionFont
        {\color{white}#1}
      \end{addmargin}
    }
  }
}

\begin{multicols}{3}

\begin{center}
  \huge{Chrysalide --- Quick Reference Card}
  \vskip 0.3em
  \large{\url{http://0xdeadc0de.fr/chrysalide/}}
\end{center} 

\vskip 1em
\hrule
\vskip 1em

% Définition des commandes

\newcommand{\cmd}[2]{
  {#1}\dotfill{\tt#2}\par
}


\fakesection{Navigation}

\cmd{Jump to selected operand}{Enter}
\cmd{Get all cross-references to the current selection}{X}
\cmd{Go to a given address}{Ctrl+G}
\cmd{List all entry points}{Ctrl+E}


\fakesection{View}

\cmd{Show plain disassembly code}{F2}
\cmd{Show graphical flow chart}{F3}


\fakesection{Management}

\cmd{Create new project}{Ctrl+N}
\cmd{Open a existing project}{Ctrl+O}
\cmd{Save the current project}{Ctrl+S}
\cmd{Terminate the program}{Ctrl+Q}


\fakesection{Miscellaneous}

\cmd{Toggle bookmark at the current localtion}{Ctrl+D}


\vskip 2em
\hrule
\vskip 1em

\centerline{This card may be freely distributed under the terms of the GNU GPL v3}
\centerline{Copyright \copyright\ {2015} Cyrille BAGARD}

\end{multicols}
\end{document}
