% Estilo para Identificação de Salas de Profs do DINF/ET/UFPR
%
% Autor: Armando Luiz Nicolini Delgado (UFPR)
% Data: 05/05/2007
%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{idsala}
              [2007/05/05 v1.0 Identificação para Salas do DINF/UFPR]
%
% Pacotes requeridos
%
% Depende da classe Slides
%
\@ifclassloaded{slides}{}{\PackageError{idsala}{Necessario a Classe 'slides' com opção 'a4paper'}{}}

%
% inclusao de fotos
\RequirePackage{graphicx}

%
% PostScript Dingbats fonst
\RequirePackage{pifont}

%
% Para facilitar o corte do papel
%
% \setlength{\headheight}{-50.8mm}
% \setlength{\oddsidemargin}{-25.4mm}
% \setlength{\evensidemargin}{-25.4mm}

% Dimensoes da placa de identificação da sala
%
\newlength{\idWidth}
\newlength{\idHeight}
\newlength{\figWidth}
\newlength{\figHeight}
\newlength{\salaWidth}
\newlength{\nomeWidth}
\setlength{\idWidth}{134mm}
\setlength{\idHeight}{140mm}
\setlength{\salaWidth}{60mm}
\setlength{\figWidth}{35mm}
\setlength{\figHeight}{40mm}
\setlength{\nomeWidth}{\idWidth}
\addtolength{\nomeWidth}{-\figWidth}
\addtolength{\nomeWidth}{-10mm}

%
% Propriedades para graphicx package
%
\setkeys{Gin}{scale=1.0}
\graphicspath{{./}{./Figs/}{../Figs/}}
\DeclareGraphicsExtensions{.png,.jpg,.gif,.pdf,.eps,.EPS,.PNG,.JPG,.GIF,.PDF}
\DeclareGraphicsRule{.PNG}{png}{.PNG}{}
\DeclareGraphicsRule{.JPG}{jpg}{.JPG}{}
\DeclareGraphicsRule{.GIF}{gif}{.GIF}{}
\DeclareGraphicsRule{.PDF}{pdf}{.PDF}{}
\DeclareGraphicsRule{.EPS}{eps}{.EPS}{}

%
%
% Macros Locais
%
\newcommand{\ordfem}{\textsuperscript{\small\underline{a}}~}

% Numero da Sala
\def\SALA{} 
% Ramal telefonico
\def\RAMAL{}
% Prefixo que ser� impresso antes do RAMAL
\def\PREFIXO{{\Large\ding{37}}~3361-}
% Logotipo (opcional) da Instituição/Departamento
\def\LOGO{}

% Nome do professor que aparece primeiro na id da sala
\def\PNOME{}
% Nome do professor que aparece em segundo na id da sala
\def\SNOME{}
% E-mail do professor que aparece primeiro na id da sala
\def\PEMAIL{}
% E-mail do professor que aparece em segundo na id da sala
\def\SEMAIL{}

% Arquivo com foto do professor que aparece primeiro na id da sala
% Deve ter extens�o .jpg, .png ou .pdf
\def\PFOTO{}
% Arquivo com foto do professor que aparece em segundo na id da sala
% Deve ter extens�o .jpg, .png ou .pdf
\def\SFOTO{}

%
% PARA MANTER UMA BOA RELA��O ENTRE OS TAMANHOS DE LETRAS E FIGURAS, BEM
% COMO A  DIMENS�O DE 140x145mm DA PLACA  DE IDENTIFICA��O, � IMPORTANTE
% QUE AS FOTOS ESTEJAM NA PROPOR��O 2X3cm OU 3X4cm (LARG X ALT)
%

%
% Cabecalho
%
\def\salaID#1{
  \vspace{10mm}
  \ifx\LOGO\empty\relax\else\parbox{\figWidth}{\includegraphics[width=\figWidth]{\LOGO}}\fi\hfill\parbox{\salaWidth}{\LARGE\textbf{#1}}
}

%
% Foto do ocupante da sala
%
\def\fotoID#1{
  \ifx#1\empty\relax\else\parbox{\figWidth}{\includegraphics[height=\figHeight]{#1}}\fi
}

%
% Nome e e-mail do ocupante da sala
%
\def\nomeID#1#2{
  \parbox{\nomeWidth}{\centering {\Large#1}~\\[-5mm] {\small\tt #2}}
}

%
%
% \corpoID{SALA}{RAMAL}{PNOME}{PEMAIL}{SNOME}{SEMAIL}{PFOTO}{SFOTO}
%
\newlength{\@sepPnomeSnome}
\newlength{\@sepSnomeFone}
\def\corpoID#1#2#3#4#5#6#7#8{
  % altura da fbox deve ser \idHeight. N�o sei como
  % for�ar isto automaticamente.
  \ifx#7\empty
      \ifx#8\empty    % Sem fotos
          \setlength{\@sepPnomeSnome}{20mm}\setlength{\@sepSnomeFone}{28mm}
      \else           % Apenas 1 foto
          \setlength{\@sepPnomeSnome}{18mm}\setlength{\@sepSnomeFone}{18mm}
      \fi
  \else
      \ifx#8\empty    % Apenas 1 foto
          \setlength{\@sepPnomeSnome}{18mm}\setlength{\@sepSnomeFone}{18mm}
      \else           % Com 2 fotos
          \setlength{\@sepPnomeSnome}{11mm}\setlength{\@sepSnomeFone}{14mm}
      \fi
  \fi
  \fbox{
    \begin{minipage}[h][\idHeight][c]{\idWidth}
      \sf
      \begin{center}
        \salaID{#1}~\\[8mm] % dist. � fixa
        \fotoID{#7}\nomeID{#3}{#4}~\\[\@sepPnomeSnome]
        \hrule~\\[5mm]
        \vfill
        \nomeID{#5}{#6}\fotoID{#8}~\\[\@sepSnomeFone]
      \end{center}
        \vfill
        \centering {\textbf{\textit{\PREFIXO#2}}}~\vspace{4mm}
    \end{minipage}
  }
}

%
% Trim trailing space
% Fonte: ftp://tug.ctan.org/pub/tex-archive/info/aro-bend/answer.015
% Uso: \trimspace<token>
% Exemplo: \edeSALA{\trimspace\linha}
%
 {\catcode`Q=3 \catcode`@=11
 \gdef\trimspace#1{\expandafter\trimspac@a#1QAA QB}
 \gdef\trimspac@x#1{\trimspac@a#1QAA QB}
 \gdef\trimspac@a#1 Q#2{\if#2A#1\expandafter\trimspac@b
  \else\trimspac@c#1\fi}
 \gdef\trimspac@b A QB{}
 \gdef\trimspac@c#1QAA{#1}
}
%
%
\newcounter{@nlinha}
%
\newcommand{\genIDsala}[1]{
  \def\@arqid{10}
  \def\@linha{}
  \newif\if@nao@fim@arq \@nao@fim@arqtrue
  %
  \def\@arqdat{#1}
  \ifx\@arqdat\empty
      \corpoID{\SALA}{\RAMAL}{\PNOME}{\PEMAIL}{\SNOME}{\SEMAIL}{\PFOTO}{\SFOTO}
  \else
    \openin\@arqid="\@arqdat"
    \ifeof\@arqid\relax
    \else
       % processar at� que arquivo acabe
       \relax\@nao@fim@arqtrue
       \setcounter{@nlinha}{0}
       \loop
        % processar id de cada sala. 
        % Cada id � separado por linha em branco 
          \read\@arqid to \@linha     % read coloca espa�o ao final da linha
          \ifeof\@arqid
             \relax\@nao@fim@arqfalse
          \else
              % Compara \@linha com string "\par", que indica linha
              % em branco. 
             \def\@separador{\par } % separa ids. Tem que ter o espa�o ao final
             \ifx\@linha\@separador
               \corpoID{\SALA}{\RAMAL}{\PNOME}{\PEMAIL}{\SNOME}{\SEMAIL}{\PFOTO}{\SFOTO}%
               \newpage%
               \setcounter{@nlinha}{0}%
               \def\SALA{}  \def\RAMAL{} \def\PNOME{}\def\SNOME{}%
               \def\PEMAIL{}\def\SEMAIL{}\def\PFOTO{}\def\SFOTO{}%
             \else
               \def\@ausente{- } % indica ausencia de campo. Tem que ter o espa�o ao final
               \ifx\@linha\@ausente\relax
               \else
                 \ifcase\value{@nlinha}%
                       \edef\SALA{\trimspace\@linha}   % case 0
                    \or%
                       \edef\RAMAL{\trimspace\@linha}  % case 1
                    \or%
                       \edef\PNOME{\trimspace\@linha}  % case 2
                    \or%
                       \edef\SNOME{\trimspace\@linha}  % case 3
                    \or%
                       \edef\PEMAIL{\trimspace\@linha} % case 4
                    \or%
                       \edef\SEMAIL{\trimspace\@linha} % case 5
                    \or%
                       \edef\PFOTO{\trimspace\@linha}  % case 6
                    \or%
                       \edef\SFOTO{\trimspace\@linha}  % case 7
                 \fi%
               \fi
               \stepcounter{@nlinha}%
             \fi%
          \fi
       \if@nao@fim@arq \repeat
       \closein\@arqid
    \fi
  \fi
}
