Fran Rojas' personal web page


APPLICATIONS

THIS PAGE NEEDS JAVASCRIPT TO WORK

Multiprecision calculator


v1.0.2



v1.1



v1.2


Lens effect


v1.1


v1.2


v1.3


Java File Encoder (encryptor)


v1.0


v1.1


v1.2


v1.3



v1.4



v1.5


Subtitle synchronization


v1.0


v1.1


Audio synchronization


v0.5


Filtering Google Sheets


v0.5


Chess PDF browser

( ChessPdfBrowser web site )

v1.0



v1.1



v1.11



v1.20


pdf2pgn


v1.20


Text encryption (Textcrypt)


v1.0


v1.0.2


v1.3


v1.4



v1.5



v1.6


Instrumental Music


v1.0



v1.1


Platform libraries


v1.0



v1.1



v1.2



v1.3



v1.4


Icons


v1.0


Pdf Inspector


v1.0


Donut


v1.0





This is one of my first major applications developed using Java.

A new library to perform the calculations was written specifically for this application. The said library adopts the parameters of the class BigDecimal. Most of the main mathematical functions were programmed incorporating BigDecimal numbers with the chosen precision.

The final application has a text box where the operations to be calculated can be written on. It also allows storage of functions and variables.

The Graphic User Interface is quite simple but it has some errors which makes the application not user friendly. I am planning to design a new version of this application which will eliminate some of the bottle necks.

.

This is how it works: when the user writes the operation to be calculated, the application will make an analysis of that operation and will be stored in a tree structure. Formulas can be stored this way because the tree structure can be stored in the function of one or more variables. Once the tree structure of the formulas is constructed, the result of each operation is evaluated recursively until it yields the final result.

This is a new version of multiprecision calculator application.

Goals for the new version:

The main explanatoin for the new version has been to implement a calculator of derivatives.

The idea of this functionality comes from very long ago, when a teacher of highschool proposed us to participate to the annual software competition presenting an application that calculated derivatives.

In those times we could not make many advances in the project, but with this version of multiprecision calculator, almost 30 years after, the application that calculates derivatives comes :-).


There is wide handbook where it is explained how the application works.

The translator of this handbook is Tamara Perry

New version of multiprecision calculator application.

Goals:


There is wide handbook where it is explained how the application works.

This small application is called lens effect, developed during one of the Easter break without plans.

At that time, I was finishing the first version of the application called File Encoder Application and I needed something beautiful or colourful for the About page ...

The original idea is not mine but I implemented it using an effect that I saw many years ago in one of the legendary DOS demonstrations.

The implementation chosen was to encapsulate the effect inside a JPanel of Java Swing.

Everything inside the panel can be zoomed with the lens, which can be placed in any coordinates inside the panel.

It was especially hard to achieve the refresh of the text components (particularly when the location of the selected text is modified by the programme) without badly affect the visual effect.

Internally, it works in such a way that when the LensJPanel is created, it receives 3 parameters i.e. the content from JPanel which the effect will be made on, the lens radius and the zoom in and out effect.

With this information, a square matrix of two dimensions will be created where each pixel inside the square surrounding the lens.
For each of those pixels (destination pixels), the coordinates of the original image (source pixel) are calculated. This source pixel is the location inside the original image to be set in the destination pixel in the image with the lens effect done.
The transformation is a simple transformation in polar coordinates. I will explain that transformation for the case of the zooming out effect:
For a particular position inside the square surrounding the lens, an origin coordinate is calculated, as explained previously.
This source pixel will also be inside the square surrounding the lens. Besides that, each destination pixel will be translated to polar coordinates (radius and angle, from the center of the lens). The source pixel associated with every destination pixel, will have the same angle but the radius will change. The radius will be always within the range of 0% to 100% for both the destination pixels and source pixels. 100% is the length of the radius of the lens. That is, for every destination pixel, to calculate the source pixel the angle is maintained but the radius is transformed using a function with increasing monotonous derivative, inside the interval between 0 and 1, where f(0) will be 0 and f(1) will be 1, where 0 means 0% of the radius of the lens and 1 is the 100% of the radius of the lens. That means that the radius of the source pixel for a particular destination pixel will have a radius lesser than the destination pixel itself, which will make the lens to zoom out.
Outside the circle of the lens, the transformation will be the identity (that is, the destination pixel and the source pixel will be the same) so that outside the lens no zooming is done.

The explanation is a bit confusing, but if you are interested to know more, please contact me.

I hope it will be useful for someone :-)

The new version of the application opens a graphical window with the shape of a circle with the lens which can be moved by clicking with the mouse and dragging.

A couple of problems can be seen:

The new version of the application fixes a bug of transparency that arose in Mac and Linux environments.

It also tries to solve the problem of pixellation present in previous versions.

This is achieved by passing a blurred gaussian filter to the image of the lens that decreases the pixellation.

The last subversión available of this versión of the application, works on both Java-8 and Java-11 Java versions.

This application was arisen because of a necessity of encrypting files with an own method.

You can encrypt files in a very configurable way, achieving encryptions really expensive in time, which makes difficult force brute attacks, that can be used to encrypt small files.

There is a user handbook quite talkative in which all details of working are explained, from the point of view of both, the user interface and internal to the application.

This version of the application was arisen due to that a change in the new version of the JRE of those times affected the look of the version v1.0 of the application. That is why version v1.1 arose.

The user handbook did not change with this version (it was the same as for the previous version).

For this version a couple of change were done:

There is a user handbook specific for this version, in which all details are explained.

In this version of the application several changes have been made:

There is a user handbook specific for this version, in which all details are explained.

The translator of this handbook is Tamara Perry

This version has arisen to try to avoid an error produced by the interaction with a new functionality of Java-9 which deals with screens with high density of pixels.

It also includes support for Maven.

There is a user handbook specific for this version, in which all details are explained.

The translator of this handbook is Tamara Perry

The goal of this version is to add new version query at start of the application for having some statistics of how many people uses it.

There is a user handbook specific for this version, in which all details are explained.

New dark mode option

This is the first version of a little application in Java that let help sincronize subtitles by applying a temporal factor to subtitle files of type (.srt).

The application autodetects the character set of the file of subtitles and allows choosing a new character set for the output (or using the encoding detected during the reading).

In this version some new things where added:

This makes that, previously knowing the values of delay and factor, video and subtitles can be prefectly synchronized.

This application of command line was developed using C++ and allows to apply a time factor to audio files.

This operation implies that the input and output files will have different sizes and different duration).

The way to achieve this result is through interpolation of digital signals.

There is a very complete user handbook which explains about the user interface and the functions of the application.

This is a Java application which allows you to connect to Google Drive and read a spreadsheet.

After that, the application will presents the data in a JTable and allows using filtering function.

There is a complete user handbook in Spanish which explains step by step how to configure the application.

Chess PDF Browser is a Java application which allows browsing chess books in PDF format.

It also allows working with game files in .pgn format.

It shows a chess board which you can also browse the moves of the games.

It also allows opening the chess books in PDF format, extract their games and is able to save them in .pgn format.

Besides that, it allows to edit the movesof the games which is stored in the memory (either reading from a .pgn file, extracting from a PDF book or create directly the movement of the pieces on the board.

There is a wide user handbook where the user interface is explained.

With the new version of the application, some bugs have been fixed, and some new features have been added:

There is wide user handbook where you can see how the application works.

With the new version of the application, user handbooks have been updated.

There is wide user handbook where you can see how the application works.

With the new version of the application some new features have been added:

There is wide user handbook where you can see how the application works.

The translator of this handbook is Tamara Perry

Complement of ChessPdfBrowser application

Command line application that allows getting the games of a pdf chess book as .pgn

It accepts several parameters that allow:


There are a pair of basic scripts for different environments that make java invocation passing the parameters to the application:

TextCrypt is a small application developed in Java with which you can encrypt and decrypt plain texts.

Text is never stored in the hard disk, it is always stored encrypted.

The format of the encrypted file created with this application, is compatible with the one of the Java File Encoder application, simply by changing accordingly the extension.

Some errores were fixed in this version of the application.

Some errores were fixed in this version of the application.

Some new functionalities are added in this version of the application:

In this version we have tried to avoid an error produced by the interaction with a new functionality of Java-9 (which automatically deals with screens with a high density of pixels (dpi)).

As a novelty, support for Maven has been added.

This version of the application includes the new version query.

New dark mode option

Instrumental music is a small Java application which receives the data from the microphone and process the input signal in real time and detects the predominant music note.

You can try whistling and then configurethe application to play that same detected note using the MIDI device.

It's a simple entertainment tool.

With this version platform libraries version is upgraded:

Now you can also configure the threshold for detecting a note

This module includes the libraries that have common classes to all the applications that I have been programming.

Basically is divided into two sublibraries:

libGeneric includes classes that do not depend on the environment, and that (theoretically) can be used in applications under any environment, Android included.


libGenericDesktop, includes classes that are more dependent on Swing (Desktop environment of standard Java). It includes:

This module includes the libraries that have common classes to all the applications that I have been programming.

Compared with the previous version, it adds:

This module includes the libraries that have common classes to all the applications that I have been programming.

Compared with the previous version, it adds:

This module includes the libraries that have common classes to all the applications that I have been programming.

Compared with the previous version, it adds:

This module includes the libraries that have common classes to all the applications that I have been programming.

Compared with the previous version, it adds:

New 3rd-party libraries, which have been included for comodity of compilation, and libraries have been divided into two groups, depending on their license (gpl y gpl):


Functionality of libraries:

This tiny application allows you to create the icons for an application taking as input an image and resizing it to different Windows standard sizes:

You can also resize that input image to a configurable size that can be different from the previous ones.

When resizing, you can translate a particular color to another one (that can be useful to change the background, that might be transparent to white).

You can change the alpha component (of transparency) of the rest of pixels too

New dark mode option

With this application you can open Pdf books and inspect their images and text.

It is a basic example of what can be done using pdfbox library.

New dark mode option

That application shows a Donut in three dimensions, giving the possibility to apply rotations in both axis.


It is a basic example of what can be done using platform libraries.


Functionality of libraries: