<?
    session_start();
	mysql_connect( 'localhost', 'root', '' )
        or die ( 'Não foi possível conectar ao Servidor.' );
    mysql_select_db( 'vestibular' )
        or die ( 'Não foi possível conectar a Base de Dados.' );
include ("gera_dados_boleto.php");
abreImagem();
cores($imagem);
escreve_textos($imagem);
geraBarraCodigo($numero_codigo_barras);
mostraImagem($imagem);


function abreImagem() {
	global $imagem, $imagem_topo, $imagem_instituicao, $imagem_banco;
	$imagem = @ImageCreateFromPNG('img/boleto.png');
	$imagem_topo = @ImageCreateFromPNG('img/topo_boleto.png');
	$imagem_instituicao = @ImageCreateFromPNG('img/logo_instituicao.png');
	$imagem_banco = @ImageCreateFromPNG('img/bb.png');
	// checa se a imagem nao foi criada
	if ($imagem == "") {
		echo "Erro na abertura da imagem base";
	}
	if ($imagem_topo == "") {
		echo "Erro na abertura da imagem topo";
	}
	if ($imagem_instituicao == "") {
		echo "Erro na abertura do logo da instituicao";
	}
	if ($imagem_banco == "") {
		echo "Erro na abertura da imagem do banco";
	}
}
function mostraImagem($imagem) {
	header("Content-Type: image/png");
	header("Content-Description: Sohar Tecnologia Ltda.");
	Imagepng($imagem);
	ImageDestroy($imagem);
}

function geraBarraCodigo($numero) {
	global $imagem, $branco;
	geraCodigo('comeco');
	for ($i = 0; $i < strlen($numero); $i = $i+2) {
		$codigo = substr($numero, $i, 2);
		geraBarra($codigo);
	}
	geraCodigo('fim');
}

function adicionaBarra($cor, $largura) {
	global $posicao_x, $imagem, $posicao_y, $altura_barra;
	ImageFilledRectangle($imagem, $posicao_x, $posicao_y, ($posicao_x + $largura), ($posicao_y + $altura_barra), $cor);
	$posicao_x += $largura;
}



function geraCodigo($acao) {
	global $preto, $branco;
	if ($acao == "comeco") {
		adicionaBarra($preto, tamanho_barra(1));
		adicionaBarra($branco, tamanho_barra(1));
		adicionaBarra($preto, tamanho_barra(1));
		adicionaBarra($branco, tamanho_barra(1));
	} elseif ($acao == "fim") {
		adicionaBarra($preto, tamanho_barra(2));
		adicionaBarra($branco, tamanho_barra(1));
		adicionaBarra($preto, tamanho_barra(1));
		adicionaBarra($branco, tamanho_barra(2));
	}
}

function geraBarra($codigo) {
	global $preto, $branco;
	$repr_numerica = array(
		"00110", /* 0 */
		"10001", /* 1 */
		"01001", /* 2 */
		"11000", /* 3 */
		"00101", /* 4 */
		"10100", /* 5 */
		"01100", /* 6 */
		"00011", /* 7 */
		"10010", /* 8 */
		"01010"  /* 9 */
	);
	$var1 = substr((string) $codigo, 0, 1);
	$var2 = substr((string) $codigo, 1, 1);

	for ($i = 0; $i < 5; $i++) {
		if (substr($repr_numerica[$var1], $i, 1)) {
			adicionaBarra($preto, tamanho_barra(2));
		}
		else {
			adicionaBarra($preto, tamanho_barra(1));
		}
		if (substr($repr_numerica[$var2], $i, 1)) {
			adicionaBarra($branco, tamanho_barra(2));
		}
		else {
			adicionaBarra($branco, tamanho_barra(1));
		}
	}
}
function tamanho_barra($qual,$largura_barra=0) {
	if ($largura_barra == 0) {
		$tamanho_fino  = 1;
		$tamanho_largo = 3;
	}
	else {
		$tamanho_fino  = $largura_barra;
		$tamanho_largo = ($largura_barra * 2) + 1;
	}
	if ($qual == 1) {
		return $tamanho_fino;
	}
	if ($qual == 2) {
		return $tamanho_largo;
	}
}

function cores($imagem) {
	global $preto, $branco;
	$preto = imagecolorallocate ($imagem, 0, 0, 0);
	$branco = imagecolorallocate ($imagem, 255, 255, 255);
}

function desenha_linha_corte($imagem, $altura) {
	$traco_linha = 7;
	for ($i = 1; $i <= 643; $i=$i+$traco_linha) {
	ImageFilledRectangle($imagem, $i, $altura, $i+$traco_linha, $altura+1, $preto);
		$i = $i+$traco_linha;
	}
}

function escreve_textos($imagem) {
	global $preto, $branco, $linha_digitavel, $nome_candidato, $insc_candidato, $curso_candidato, $lingua_candidato, $rg_candidato, $nascimento_candidato, $mae_candidato, $local_prova_candidato, $candidato_treineiro, $local_pagamento, $data_vencimento, $cedente, $agencia, $codigo_cedente, $data_documento, $numero_documento, $especie_documento, $aceite, $data_processamento, $nosso_numero, $numero_conta_responsavel, $carteira, $especie, $quantidade, $valor, $desconto, $outras_deducoes, $juros, $outros_acrescimos, $valor_cobrado, $instrucao_1, $instrucao_2, $instrucao_2_1, $instrucao_3, $instrucao_4, $instrucao_5, $instrucao_6, $instrucao_7, $codigo_banco, $convenio, $titulo_1, $titulo_2, $titulo_3, $data_prova, $horario_prova, $cidade_candidato, $cep_candidato;
	global $imagem_topo, $imagem_instituicao, $imagem_banco;
		// Parte superior do boleto
		imagecopy($imagem, $imagem_topo, 163, 35, 0, 0, 479, 84);
		imagecopy($imagem, $imagem_instituicao, 3, 8, 0, 0, 130, 113);


		imagestring ( $imagem, 2, 6, 126,"Nome do Candidato:", $preto);
		imagestring ( $imagem, 3, 6, 141,strtoupper($nome_candidato), $preto);

		imagestring ( $imagem, 2, 511, 126,"Número Inscrição:", $preto);
		imagestring ( $imagem, 3, 511, 141,$insc_candidato, $preto);

		imagestring ( $imagem, 2, 6, 154,"Curso:", $preto);
		imagestring ( $imagem, 3, 6, 169,strtoupper($curso_candidato), $preto);

		imagestring ( $imagem, 2, 204, 154,"Língua Estrangeira:", $preto);
		imagestring ( $imagem, 3, 204, 169,strtoupper($lingua_candidato), $preto);

		imagestring ( $imagem, 2, 340, 154,"Documento de Identidade:", $preto);
		imagestring ( $imagem, 3, 340, 169,$rg_candidato, $preto);
		//imagestring ( $imagem, 3, 340, 169,$cpf_candidato, $preto);

		imagestring ( $imagem, 2, 511, 154,"Data Nascimento:", $preto);
		imagestring ( $imagem, 3, 511, 169,$nascimento_candidato, $preto);

		imagestring ( $imagem, 2, 6, 185,"Nome da Mãe:", $preto);
		imagestring ( $imagem, 3, 6, 200,strtoupper($mae_candidato), $preto);

		imagestring ( $imagem, 2, 511, 185,"Local da Prova:", $preto);
		imagestring ( $imagem, 3, 511, 200,strtoupper($local_prova_candidato), $preto);

		imagestring ( $imagem, 3, 6, 220,"Data e Horário das Provas:", $preto);
		imagestring ( $imagem, 3, 12, 242,$data_prova, $preto);
		imagestring ( $imagem, 2, 96, 235,$horario_prova[1], $preto);
		imagestring ( $imagem, 2, 96, 248,$horario_prova[2], $preto);

		imagestring ( $imagem, 2, 6, 265,"Data da Inscrição:", $preto);
		imagestring ( $imagem, 3, 6, 280,$data_documento, $preto);

		ImageFilledRectangle($imagem, 225, 295, 634, 295, $preto);
		imagestring ( $imagem, 3, 350, 297,"Assinatura do Candidato:", $preto);

//		imagestring ( $imagem, 3, 204, 418,$linha_digitavel, $preto);
		imagestring ( $imagem, 2, 515, 310,"Autenticação Mecânica", $preto);

		imagestring ( $imagem, 1, 272, 382,"C O R T E   A Q U I", $preto);
		desenha_linha_corte($imagem, 379);

		// Parte inferior do boleto
		imagestring ( $imagem, 3, 204, 418,$linha_digitavel, $preto);
		imagestring ( $imagem, 3, 204, 398,$codigo_banco, $preto);

		imagecopy($imagem, $imagem_banco, 3, 397, 0, 0, 189, 31);
		
		imagestring ( $imagem, 3, 300, 397,"F I C H A    D E    C O M P E N S A Ç Ã O", $branco);
		
		imagestring ( $imagem, 2, 6, 464,"Cedente:", $preto);
		imagestring ( $imagem, 3, 6, 478,$cedente, $preto);
		
		imagestring ( $imagem, 2, 494, 433,"Vencimento:", $preto);
		imagestring ( $imagem, 3, 494, 448,$data_vencimento, $preto);
		
		imagestring ( $imagem, 2, 494, 494,"Nosso Número:", $preto);
		imagestring ( $imagem, 3, 494, 508,modulo_11("$convenio$insc_candidato"), $preto);
		
		imagestring ( $imagem, 2, 132, 494,"Número Documento:", $preto);
		imagestring ( $imagem, 3, 132, 508,$numero_documento, $preto);
		
		imagestring ( $imagem, 2, 239, 494,"Espécie Doc.:", $preto);
		imagestring ( $imagem, 3, 239, 508,$especie_documento, $preto);
		
		imagestring ( $imagem, 2, 6, 524,"No Conta/Respons.:", $preto);
		
		imagestring ( $imagem, 2, 6, 494,"Data Documento:", $preto);
		imagestring ( $imagem, 3, 6, 508,$data_documento, $preto);
		
		imagestring ( $imagem, 2, 494, 464,"Agência/Código Cedente:", $preto);
		imagestring ( $imagem, 3, 494, 478,modulo_11("$agencia") . '/' . modulo_11("$codigo_cedente"), $preto);
		
		imagestring ( $imagem, 2, 6, 434,"Local de Pagamento:", $preto);
		imagestring ( $imagem, 3, 6, 448,$local_pagamento, $preto);
		
		imagestring ( $imagem, 2, 324, 494,"Aceite:", $preto);
		imagestring ( $imagem, 3, 324, 508,"N", $preto);
		
		imagestring ( $imagem, 2, 375, 494,"Data Processamento:", $preto);
		imagestring ( $imagem, 3, 375, 508,$data_processamento, $preto);
		
		imagestring ( $imagem, 2, 130, 524,"Carteira:", $preto);
		imagestring ( $imagem, 3, 130, 537,$carteira, $preto);
		
		imagestring ( $imagem, 2, 186, 524,"Espécie:", $preto);
		imagestring ( $imagem, 3, 186, 537, $especie, $preto);
		
		imagestring ( $imagem, 2, 238, 524,"Quantidade:", $preto);
		imagestring ( $imagem, 3, 238, 537, $quantidade, $preto);
		
		imagestring ( $imagem, 2, 375, 524,"Valor:", $preto);
		
		imagestring ( $imagem, 2, 494, 524,"(=) Valor do Documento:", $preto);
		imagestring ( $imagem, 3, 494, 538, $valor, $preto);
		
		imagestring ( $imagem, 2, 494, 554,"(-) Desconto/Abatimento:", $preto);
		imagestring ( $imagem, 3, 494, 569, $desconto, $preto);
		
		imagestring ( $imagem, 2, 494, 584,"(-) Outras Deduções:", $preto);
		imagestring ( $imagem, 3, 494, 599, $outras_deducoes, $preto);
		
		imagestring ( $imagem, 2, 494, 614,"(+) Mora/Multa/Juro:", $preto);
		imagestring ( $imagem, 3, 494, 629, $juros, $preto);
		
		imagestring ( $imagem, 2, 494, 644,"(+) Outros Acréscimos:", $preto);
		imagestring ( $imagem, 3, 494, 659, $outros_acrescimos, $preto);
		
		imagestring ( $imagem, 3, 494, 674,"(=) Valor Cobrado:", $preto);
		imagestring ( $imagem, 3, 494, 689, $valor_cobrado, $preto);
		
		imagestring ( $imagem, 2, 6,552,"Instruções:", $preto);
		imagestring ( $imagem, 3, 12,572,$instrucao_1, $preto);
		imagestring ( $imagem, 3, 12,584,$instrucao_2, $preto);
		imagestring ( $imagem, 3, 12,597,$instrucao_2_1, $preto);
		imagestring ( $imagem, 3, 12,618,$instrucao_3, $preto);
		imagestring ( $imagem, 2, 12,630,strtoupper($instrucao_4), $preto);
		imagestring ( $imagem, 2, 12,642,strtoupper($instrucao_5), $preto);
		imagestring ( $imagem, 2, 12,654,strtoupper($instrucao_6), $preto);
		imagestring ( $imagem, 2, 12,666,strtoupper($instrucao_7), $preto);
		
		imagestring ( $imagem, 2, 515, 703,"Autenticação Mecânica", $preto);
		
		imagestring ( $imagem, 2, 006, 703,"Candidato (Sacado):", $preto);
		imagestring ( $imagem, 3, 120, 703,strtoupper($nome_candidato) . ' - ' . $insc_candidato, $preto);
		imagestring ( $imagem, 3, 120, 718,strtoupper($cep_candidato) . ' - ' . strtoupper($cidade_candidato), $preto);
		
		imagestring ( $imagem, 1, 272, 790,"C O R T E   A Q U I", $preto);
		desenha_linha_corte($imagem, 787);
}
?>
